diff --git a/DetectorDescription/Identifier/Identifier/Identifier.h b/DetectorDescription/Identifier/Identifier/Identifier.h index f2dbfcbdfc0d1968db32c09510db98a9e0366c4e..502385156f627bdddf032e2aa6dc3d1f1210975c 100644 --- a/DetectorDescription/Identifier/Identifier/Identifier.h +++ b/DetectorDescription/Identifier/Identifier/Identifier.h @@ -245,7 +245,12 @@ inline Identifier::Identifier (Identifier32::value_type value) : m_id(max_value) { //std::cout << "Identifier(Identifier32::value_type) " << value << std::endl; - m_id = (static_cast<value_type>(value) << 32); + if (value == ~static_cast<Identifier32::value_type>(0)) { + m_id = max_value; + } + else { + m_id = (static_cast<value_type>(value) << 32); + } } inline Identifier::Identifier (int value) : m_id(max_value) @@ -318,7 +323,12 @@ inline Identifier& Identifier::operator = (Identifier32::value_type value) { //std::cout << "operator=(Identifier32::value_type) " << value << std::endl; - m_id = static_cast<value_type>(value) << 32; + if (value == ~static_cast<Identifier32::value_type>(0)) { + m_id = max_value; + } + else { + m_id = static_cast<value_type>(value) << 32; + } return (*this); } inline Identifier&