diff --git a/nifty5/operators/linear_operator.py b/nifty5/operators/linear_operator.py
index 2ae510c8b9ce7480b853288c333c3b0f75529193..60bef67bc15e632e0752660cbc440c9950caacb9 100644
--- a/nifty5/operators/linear_operator.py
+++ b/nifty5/operators/linear_operator.py
@@ -259,5 +259,4 @@ class LinearOperator(Operator):
def _check_input(self, x, mode):
self._check_mode(mode)
- if self._dom(mode) != x.domain:
- raise ValueError("The operator's and field's domains don't match.")
+ self._check_domain_equality(self._dom(mode), x.domain)
diff --git a/nifty5/operators/mask_operator.py b/nifty5/operators/mask_operator.py
index abd9ed1115383a6fee8f47cf3f9f913e7b802569..936e1250a8e72c6727ecc948fb69893e1bae965b 100644
--- a/nifty5/operators/mask_operator.py
+++ b/nifty5/operators/mask_operator.py
@@ -32,6 +32,15 @@ from .linear_operator import LinearOperator
# collect the unstructured Fields.
class MaskOperator(LinearOperator):
def __init__(self, mask):
+ """Implementation of a mask response
+
+ This operator takes a field, applies a mask and returns the values of
+ the field in a UnstructuredDomain. It can be used as response operator.
+
+ Parameters
+ ----------
+ mask : Field
+ """
if not isinstance(mask, Field):
raise TypeError
diff --git a/nifty5/operators/operator.py b/nifty5/operators/operator.py
index 28328c1aa8e8537a4cce065af8977e1f1010102f..aca4749110a75afd3e9a351e488397f039244ad0 100644
--- a/nifty5/operators/operator.py
+++ b/nifty5/operators/operator.py
@@ -23,6 +23,17 @@ class Operator(NiftyMetaBase()):
The domain on which the Operator's output Field lives."""
return self._target
+ @staticmethod
+ def _check_domain_equality(dom_op, dom_field):
+ if dom_op != dom_field:
+ s = "The operator's and field's domains don't match."
+ from ..domain_tuple import DomainTuple
+ from ..multi_domain import MultiDomain
+ if not isinstance(dom_op, [DomainTuple, MultiDomain]):
+ s += " Your operator's domain is neither a `DomainTuple`" \
+ " nor a `MultiDomain`."
+ raise ValueError(s)
+
def scale(self, factor):
if factor == 1:
return self
@@ -66,8 +77,7 @@ class Operator(NiftyMetaBase()):
def _check_input(self, x):
from ..linearization import Linearization
d = x.target if isinstance(x, Linearization) else x.domain
- if self._domain != d:
- raise ValueError("The operator's and field's domains don't match.")
+ self._check_domain_equality(self._domain, d)
def __call__(self, x):
if isinstance(x, Operator):