From 682713d9de607931a069fc88f8576369807fd349 Mon Sep 17 00:00:00 2001 From: scott snyder Date: Tue, 29 Oct 2019 02:47:03 +0100 Subject: [PATCH 1/2] CaloTPCnv: Workaround for problem with *WithKey and TrigSerializeTP. Adjust CaloTPCnv converters so they won't give an error if persToTrans is called instead of persToTransWithKey. This prevents a crash when the converters are called from TrigSerializeTP. This will eventually be fixed in TrigSerializeTP, after which this workaround can be removed. See ATR-20445. --- .../CaloTPCnv/CaloTPCnv/CaloCellContainerCnv_p1.h | 9 +++++++++ .../CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p1.h | 10 ++++++++++ .../CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p2.h | 11 +++++++++++ .../CaloTPCnv/CaloClusterCellLinkContainerCnv_p1.h | 8 ++++++++ 4 files changed, 38 insertions(+) diff --git a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellContainerCnv_p1.h b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellContainerCnv_p1.h index 7a5c75071c8..8ac5eaca3aa 100644 --- a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellContainerCnv_p1.h +++ b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellContainerCnv_p1.h @@ -36,6 +36,15 @@ public: CaloCompactCellContainer*, const std::string& key, MsgStream& log) const override; + + // TEMPORARY: Until trigger serialization is fixed. + using base_class::persToTrans; + void persToTrans (const CaloCompactCellContainer* pers, + CaloCellContainer* trans, + MsgStream& log) const override + { + persToTransWithKey (pers, trans, "", log); + } }; diff --git a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p1.h b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p1.h index 5c65eb03ace..cb6056e9a0d 100755 --- a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p1.h +++ b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p1.h @@ -35,6 +35,16 @@ public: MsgStream &log) const override; + // TEMPORARY: Until trigger serialization is fixed. + using base_class::persToTrans; + void persToTrans (const CaloCellLinkContainer_p1* pers, + CaloCellLinkContainer* trans, + MsgStream &log) const override + { + persToTransWithKey (pers, trans, "", log); + } + + private: NavigableCnv_p1< Navigable,float > m_converter; }; diff --git a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p2.h b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p2.h index ee90a8cf9ee..7fce0f72a8c 100755 --- a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p2.h +++ b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloCellLinkContainerCnv_p2.h @@ -36,6 +36,7 @@ public: * @param trans The transient object to which to convert. * @param log Error logging stream. */ + virtual void persToTransWithKey (const CaloCellLinkContainer_p2* pers, CaloCellLinkContainer* trans, const std::string& key, @@ -48,10 +49,20 @@ public: * @param pers The persistent object to which to convert. * @param log Error logging stream. */ + virtual void transToPersWithKey (const CaloCellLinkContainer* trans, CaloCellLinkContainer_p2* pers, const std::string& key, MsgStream &log) const override; + + // TEMPORARY: Until trigger serialization is fixed. + using base_class::persToTrans; + void persToTrans (const CaloCellLinkContainer_p2* pers, + CaloCellLinkContainer* trans, + MsgStream &log) const override + { + persToTransWithKey (pers, trans, "", log); + } }; diff --git a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloClusterCellLinkContainerCnv_p1.h b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloClusterCellLinkContainerCnv_p1.h index c64689f840e..56e1d8c846f 100644 --- a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloClusterCellLinkContainerCnv_p1.h +++ b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/CaloClusterCellLinkContainerCnv_p1.h @@ -51,6 +51,14 @@ public: const std::string& key, MsgStream& log) const override; + // TEMPORARY: Until trigger serialization is fixed. + using base_class::persToTrans; + void persToTrans (const CaloClusterCellLinkContainer_p1* pers, + CaloClusterCellLinkContainer* trans, + MsgStream& log) const override + { + persToTransWithKey (pers, trans, "", log); + } private: DataLinkCnv_p2 > m_linkCnv; -- GitLab From 9331279f40f53aa24ce806cbc8a21221e55aecd2 Mon Sep 17 00:00:00 2001 From: scott snyder Date: Tue, 29 Oct 2019 02:49:53 +0100 Subject: [PATCH 2/2] TPTools: Workaround for problem with *WithKey and TrigSerializeTP. Temporarily remove final qualifier from TPConverterWithKeyBase::persToTrans, to allow a workaround in CaloTPCnv. To be removed once TrigSerializeTP is fixed to call through the new interface. See ATR-20445. --- Database/TPTools/TPTools/TPConverter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Database/TPTools/TPTools/TPConverter.h b/Database/TPTools/TPTools/TPConverter.h index c9ae26f9f25..2527fde0707 100644 --- a/Database/TPTools/TPTools/TPConverter.h +++ b/Database/TPTools/TPTools/TPConverter.h @@ -788,7 +788,7 @@ public: // It's an error if the non-key versions get called. virtual void persToTrans(const PERS* /*persObj*/, TRANS* /*transObj*/, - MsgStream& /*log*/) const override final + MsgStream& /*log*/) const override /*final*/ { throw std::runtime_error ("persToTrans called where persToTransWithKey required."); } -- GitLab