diff --git a/Database/IOVDbSvc/src/IOVDbFolder.h b/Database/IOVDbSvc/src/IOVDbFolder.h index dfa6181012186f80c5eef0404f132fc6ed3fc58b..518986e784fd0585895a598f3abadcdd603af87e 100644 --- a/Database/IOVDbSvc/src/IOVDbFolder.h +++ b/Database/IOVDbSvc/src/IOVDbFolder.h @@ -64,6 +64,7 @@ public: // in subsequent events. bool extensible() const; bool dropped() const; + bool iovOverridden() const; const std::string& joTag() const; const std::string& resolvedTag() const; const std::string& eventStore() const; @@ -316,6 +317,8 @@ inline bool IOVDbFolder::extensible() const { return m_extensible; } inline bool IOVDbFolder::dropped() const { return m_dropped; } +inline bool IOVDbFolder::iovOverridden() const { return m_iovoverridden; } + inline const std::string& IOVDbFolder::joTag() const { return m_jotag; } inline const std::string& IOVDbFolder::resolvedTag() const { return m_tag; } diff --git a/Database/IOVDbSvc/src/IOVDbSvc.cxx b/Database/IOVDbSvc/src/IOVDbSvc.cxx index c3f8365826228b48bf420bb4d1d51348434eb7c5..063ac457a3be10ff2944403d69f99260633a86b5 100644 --- a/Database/IOVDbSvc/src/IOVDbSvc.cxx +++ b/Database/IOVDbSvc/src/IOVDbSvc.cxx @@ -555,7 +555,17 @@ StatusCode IOVDbSvc::getRange( const CLID& clid, range = IOVRange (range.start(), extStop); } - + // Special handling for IOV override: set the infinite validity range + if (folder->iovOverridden()) { + if (folder->timeStamp()) { + range = IOVRange ( IOVTime(IOVTime::MINTIMESTAMP) + , IOVTime(IOVTime::MAXTIMESTAMP) ); + } + else { + range = IOVRange ( IOVTime(IOVTime::MINRUN,IOVTime::MINEVENT) + , IOVTime(IOVTime::MAXRUN,IOVTime::MAXEVENT) ); + } + } return StatusCode::SUCCESS; }