bool StateVectorLimiter<StateType>::operator()(StateVector<StateType> &_stateVec) const
{
	if((_stateVec.size() != mUpper.size()) |(_stateVec.size() != mLower.size()))
	{
		std::cout << "incompatible dimensions. can't evaluate state limits\n";
		return false;
	}
}
bool StateVectorLimiter<StateType>::testState(const StateVector<StateType> &_stateVec) const
{
	bool result = true;

	if((_stateVec.size() != mUpper.size()) |(_stateVec.size() != mLower.size()))
	{
		std::cout << "incompatible dimensions. can't evaluate state limits\n";
		return false;
	}

	for(unsigned i=0; i < _stateVec.size(); i++)
	{
		bool valid = ((mLower(i) <= _stateVec[i]) & (mUpper(i) >= _stateVec[i]));
		result &= valid;
		std::string msg = valid ? "ok" : "error";
		std::cout << i << ". value=" << _stateVec[i] << "[" << mLower(i) << " ; " << mUpper(i)
				  << msg << "\n";

	}
	return result;
}