diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonPrepRawData/MMPrepDataContainerCnv_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonPrepRawData/MMPrepDataContainerCnv_p1.h index 90a066e69e8ee3c5f619764e4155bb94361a3e30..02a81c18cbcb9a695735264641112d18aaee45f0 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonPrepRawData/MMPrepDataContainerCnv_p1.h +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonPrepRawData/MMPrepDataContainerCnv_p1.h @@ -11,7 +11,7 @@ #include "MuonEventTPCnv/MuonPrepRawData/MuonPRD_Container_p2.h" -#include "MuonEventTPCnv/CreateTransientTemplates.h" + #include <iostream> class StoreGateSvc; diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawDataContainerCnv_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawDataContainerCnv_p1.h index 22691cffe5c085d2a98fa9db97181bab749c108a..f1ecdd97e6091bdb2a3c937c85f9d9038207ed9c 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawDataContainerCnv_p1.h +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawDataContainerCnv_p1.h @@ -22,10 +22,10 @@ namespace Muon{ virtual void persToTrans(const Muon::MM_RawDataContainer_p1* persCont, Muon::MM_RawDataContainer* transCont, - MsgStream &log) override; + MsgStream &log) ; virtual void transToPers(const Muon::MM_RawDataContainer* transCont, Muon::MM_RawDataContainer_p1* persCont, - MsgStream &log) override; + MsgStream &log) ; virtual Muon::MM_RawDataContainer* createTransient(const Muon::MM_RawDataContainer_p1* persObj, MsgStream& log) override final; diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawData_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawData_p1.h index d12392da63b36991be7d3ba4faf79aef713b66fd..dd0bce370bfe59fee03dbab5cf70df24f82e8752 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawData_p1.h +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/MM_RawData_p1.h @@ -8,13 +8,21 @@ namespace Muon { - class MM_RawData_p1 - { - public: - MM_RawData_p1() : m_id(0) {} - - unsigned int m_id; //!< FIXME! Remove this eventually - }; + class MM_RawData_p1 + { + public: + MM_RawData_p1() : m_id(0), m_channel(0), m_time(0), m_charge(0) {} + + unsigned int m_id; //!< FIXME! Remove this eventually + + /// writing out channel id, time and charge + unsigned int m_channel; + + unsigned int m_time; + + unsigned int m_charge; + + }; } #endif diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawDataContainerCnv_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawDataContainerCnv_p1.h index 01325a1c254f19615b5e060965cdb0d1a381ec89..56504a7c2bb80c95398a327a34cead396e939942 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawDataContainerCnv_p1.h +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawDataContainerCnv_p1.h @@ -14,12 +14,6 @@ class sTgcIdHelper; -namespace TPCnv { - template<> class CreateTransient< Muon::STGC_RawDataContainer > { - public: static std::unique_ptr< Muon::STGC_RawDataContainer > create() { return nullptr;} - }; -} - namespace Muon{ class STGC_RawDataContainerCnv_p1 : public T_AthenaPoolTPCnvBase<Muon::STGC_RawDataContainer, Muon::STGC_RawDataContainer_p1> { @@ -28,10 +22,10 @@ namespace Muon{ virtual void persToTrans(const Muon::STGC_RawDataContainer_p1* persCont, Muon::STGC_RawDataContainer* transCont, - MsgStream &log) override; + MsgStream &log) ; virtual void transToPers(const Muon::STGC_RawDataContainer* transCont, Muon::STGC_RawDataContainer_p1* persCont, - MsgStream &log) override; + MsgStream &log) ; virtual Muon::STGC_RawDataContainer* createTransient(const Muon::STGC_RawDataContainer_p1* persObj, MsgStream& log) override final; diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawData_p1.h b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawData_p1.h index 5504cada1b9e255daa7535ba52a16288c0ac9e73..f7916f94c2003483097dc3a5a271a64017495505 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawData_p1.h +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/MuonEventTPCnv/MuonRDO/STGC_RawData_p1.h @@ -11,9 +11,18 @@ namespace Muon class STGC_RawData_p1 { public: - STGC_RawData_p1() : m_id(0) {} + STGC_RawData_p1() : m_id(0), m_time(0), m_charge(0), m_bcTag(0), m_isDead(false) {} unsigned int m_id; //!< FIXME! Remove this eventually + + float m_time; + + float m_charge; + + uint16_t m_bcTag; + + bool m_isDead; + }; } diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx index ed730658a5ff6ec24dcf9449179c865ccad18f50..e30e88040da7915cef50dda40c620bb4cac472be 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx @@ -15,10 +15,13 @@ // Gaudi #include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/Bootstrap.h" +// #include "GaudiKernel/CnvFactory.h" +// #include "GaudiKernel/StatusCode.h" +// #include "GaudiKernel/Service.h" // Athena #include "StoreGate/StoreGateSvc.h" -#include "MuonEventTPCnv/CreateTransientTemplates.h" + StatusCode Muon::MMPrepDataContainerCnv_p1::initialize(MsgStream &log) { // Do not initialize again: @@ -243,7 +246,7 @@ void Muon::MMPrepDataContainerCnv_p1::persToTrans(const Muon::MMPrepDataContain // int result = m_MMId->get_detectorElement_hash(chan->identify(), deIDHash); // if (result&&log.level() <= MSG::WARNING) // log << MSG::WARNING<< " Muon::MMPrepDataContainerCnv_p1::persToTrans: problem converting Identifier to DE hash "<<endmsg; - // chan->m_detEl = m_muonDetMgr->getMMReadoutElement(deIDHash); + // chan->m_detEl = m_muonDetMgr->getMMReadoutElement(deIDHash);; log << MSG::DEBUG<<"chan identify(): "<<chan->identify()<<endmsg; chan->setHashAndIndex(collIDHash, chanIndex); diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/sTgcPrepDataContainerCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/sTgcPrepDataContainerCnv_p1.cxx index 97489f754b549dc0dae092d8f952df6c73971e8f..29bbf3db79e893bd426e1fa4d06280a58637783d 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/sTgcPrepDataContainerCnv_p1.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/sTgcPrepDataContainerCnv_p1.cxx @@ -15,10 +15,13 @@ // Gaudi #include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/Bootstrap.h" +// #include "GaudiKernel/CnvFactory.h" +// #include "GaudiKernel/StatusCode.h" +// #include "GaudiKernel/Service.h" // Athena #include "StoreGate/StoreGateSvc.h" -#include "MuonEventTPCnv/CreateTransientTemplates.h" + StatusCode Muon::sTgcPrepDataContainerCnv_p1::initialize(MsgStream &log) { // Do not initialize again: diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataCnv_p1.cxx index 11cc296aff29c1a3527d4450545cdb09f09b1f4d..ae0af68ab3dc076b6460999619936f9291e7713d 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataCnv_p1.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataCnv_p1.cxx @@ -11,11 +11,18 @@ void Muon::MM_RawDataCnv_p1::persToTrans( const Muon::MM_RawData_p1 *, Muon::MM_ void Muon::MM_RawDataCnv_p1::transToPers( const Muon::MM_RawData *transObj, Muon::MM_RawData_p1 *persObj, MsgStream & /**log*/ ) { persObj->m_id = transObj->m_id.get_identifier32().get_compact(); + persObj->m_channel = transObj->channel(); + persObj->m_time = transObj->time(); + persObj->m_charge = transObj->charge(); } Muon::MM_RawData* Muon::MM_RawDataCnv_p1::createTransient(const Muon::MM_RawData_p1* persObj, MsgStream& /**log*/) { - Muon::MM_RawData* trans = new MM_RawData( Identifier (persObj->m_id) ); - return trans; + Muon::MM_RawData* trans = new MM_RawData( Identifier (persObj->m_id), + persObj->m_channel, + persObj->m_time, + persObj->m_charge ); + + return trans; } diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataContainerCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataContainerCnv_p1.cxx index e58c72a3aef687b832125f92011bc9ab6bb10726..d9bab01dc75b9e7fbb05736166f3ce467037ac6e 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataContainerCnv_p1.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/MM_RawDataContainerCnv_p1.cxx @@ -6,7 +6,6 @@ #include "MuonRDO/MM_RawDataContainer.h" #include "MuonEventTPCnv/MuonRDO/MM_RawDataContainer_p1.h" #include "MuonIdHelpers/MmIdHelper.h" -#include "MuonEventTPCnv/CreateTransientTemplates.h" #define DEBUG 0 @@ -35,13 +34,20 @@ void Muon::MM_RawDataContainerCnv_p1::transToPers(const Muon::MM_RawDataContaine void Muon::MM_RawDataContainerCnv_p1::persToTrans(const Muon::MM_RawDataContainer_p1* persCont, Muon::MM_RawDataContainer* transCont, MsgStream &log) { + size_t numColl = persCont->size(); + if (DEBUG) log<<MSG::VERBOSE<<"MM_RawDataContainerCnv_p1::persToTrans with MM_RawDataContainer_p1 with this many collections "<<numColl<<std::endl; MM_RawDataCollection* coll = nullptr; for ( const MM_RawDataCollection_p1 collection : *persCont){ + coll = new MM_RawDataCollection(collection.m_idHash); - transCont->addCollection(coll,collection.m_idHash); + if ( transCont->addCollection(coll,collection.m_idHash).isFailure() ) { + log << MSG::WARNING << "Could not add the MM RDO collection during persistent -> transient conversion" << std::endl; + return; + } + if (DEBUG) log<<MSG::VERBOSE<<"Have created empty transient collection, now looping over persistent coll with this many entries: "<<collection.size() <<std::endl; for ( unsigned int j=0 ; j < collection.size() ; ++j ){ @@ -59,7 +65,7 @@ void Muon::MM_RawDataContainerCnv_p1::persToTrans(const Muon::MM_RawDataContain //================================================================ Muon::MM_RawDataContainer* Muon::MM_RawDataContainerCnv_p1::createTransient(const Muon::MM_RawDataContainer_p1* persObj, MsgStream& log) { - std::unique_ptr<MM_RawDataContainer> trans(new Muon::MM_RawDataContainer(m_idHelper->module_hash_max())); // FIXME This seems to give a ridiculously large number. Maybe I need to call something else? + std::unique_ptr<MM_RawDataContainer> trans(new Muon::MM_RawDataContainer(m_idHelper->module_hash_max())); if (DEBUG) log<<MSG::VERBOSE<<"MM_RawDataContainerCnv_p1::createTransient() Created new MM_RawDataContainer with this many collections "<<trans->numberOfCollections()<<std::endl; persToTrans(persObj, trans.get(), log); diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataCnv_p1.cxx index 4f2bd0b79f31c44a4fa8c99bed1d24f8388e277d..bc1a78105411bbd72ce85213d09bb5f5e09a9f87 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataCnv_p1.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataCnv_p1.cxx @@ -11,11 +11,20 @@ void Muon::STGC_RawDataCnv_p1::persToTrans( const Muon::STGC_RawData_p1 *, Muon: void Muon::STGC_RawDataCnv_p1::transToPers( const Muon::STGC_RawData *transObj, Muon::STGC_RawData_p1 *persObj, MsgStream & /**log*/ ) { persObj->m_id = transObj->m_id.get_identifier32().get_compact(); + persObj->m_bcTag = transObj->bcTag(); + persObj->m_time = transObj->time(); + persObj->m_charge = transObj->charge(); + persObj->m_isDead = transObj->isDead(); } Muon::STGC_RawData* Muon::STGC_RawDataCnv_p1::createTransient(const Muon::STGC_RawData_p1* persObj, MsgStream& /**log*/) { - Muon::STGC_RawData* trans = new STGC_RawData( Identifier (persObj->m_id) ); - return trans; + Muon::STGC_RawData* trans = new STGC_RawData( Identifier (persObj->m_id), + persObj->m_bcTag, + persObj->m_time, + persObj->m_charge, + persObj->m_isDead); + + return trans; } diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataContainerCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataContainerCnv_p1.cxx index a0ddbdb08c57e7958ce5f5ae34abff92afc143be..ece37a850d4f8056067d99163ceb83c21c47e545 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataContainerCnv_p1.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonRDO/STGC_RawDataContainerCnv_p1.cxx @@ -6,7 +6,6 @@ #include "MuonRDO/STGC_RawDataContainer.h" #include "MuonEventTPCnv/MuonRDO/STGC_RawDataContainer_p1.h" #include "MuonIdHelpers/sTgcIdHelper.h" -#include "MuonEventTPCnv/CreateTransientTemplates.h" #define DEBUG 0 @@ -42,7 +41,10 @@ void Muon::STGC_RawDataContainerCnv_p1::persToTrans(const Muon::STGC_RawDataCon STGC_RawDataCollection* coll = nullptr; for ( const STGC_RawDataCollection_p1 collection : *persCont){ coll = new STGC_RawDataCollection(collection.m_idHash); - transCont->addCollection(coll,collection.m_idHash); + if ( transCont->addCollection(coll,collection.m_idHash).isFailure() ) { + log << MSG::WARNING << "Could not add the sTGC collection during persistent->transient conversion" << std::endl; + return; + } if (DEBUG) log<<MSG::VERBOSE<<"Have created empty transient collection, now looping over persistent coll with this many entries: "<<collection.size() <<std::endl; for ( unsigned int j=0 ; j < collection.size() ; ++j ){ @@ -60,7 +62,7 @@ void Muon::STGC_RawDataContainerCnv_p1::persToTrans(const Muon::STGC_RawDataCon //================================================================ Muon::STGC_RawDataContainer* Muon::STGC_RawDataContainerCnv_p1::createTransient(const Muon::STGC_RawDataContainer_p1* persObj, MsgStream& log) { - std::unique_ptr<STGC_RawDataContainer> trans(new Muon::STGC_RawDataContainer(m_idHelper->module_hash_max())); // FIXME This seems to give a ridiculously large number. Maybe I need to call something else? + std::unique_ptr<STGC_RawDataContainer> trans(new Muon::STGC_RawDataContainer(m_idHelper->module_hash_max())); if (DEBUG) log<<MSG::VERBOSE<<"STGC_RawDataContainerCnv_p1::createTransient() Created new STGC_RawDataContainer with this many collections "<<trans->numberOfCollections()<<std::endl; persToTrans(persObj, trans.get(), log); diff --git a/MuonSpectrometer/MuonCnv/MuonRdoToPrepData/src/StgcRdoToStgcPrepData.cxx b/MuonSpectrometer/MuonCnv/MuonRdoToPrepData/src/StgcRdoToStgcPrepData.cxx index adcfee4778dc1bfe911e5f4f2daab1c99919083b..ef03632fc9dbd1bcd6955d6f5f91112242cf2d4d 100755 --- a/MuonSpectrometer/MuonCnv/MuonRdoToPrepData/src/StgcRdoToStgcPrepData.cxx +++ b/MuonSpectrometer/MuonCnv/MuonRdoToPrepData/src/StgcRdoToStgcPrepData.cxx @@ -7,7 +7,7 @@ StgcRdoToStgcPrepData::StgcRdoToStgcPrepData(const std::string& name, ISvcLocator* pSvcLocator) : AthAlgorithm(name, pSvcLocator), - m_decoderTool ("Muon::StgcRdoToStgcPrepDataTool/StgcRdoToStgcPrepDataTool", this), + m_decoderTool ("Muon::sTgcRdoToPrepDataTool/STGC_PrepDataProviderTool"), m_prdContainer("STGC_Measurements") { declareProperty("OutputCollection", m_prdContainer); diff --git a/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataToPrepDataTool.cxx b/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataToPrepDataTool.cxx deleted file mode 100644 index ef3af13728e48ca0a26b880577221e6c891fe9d6..0000000000000000000000000000000000000000 --- a/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataToPrepDataTool.cxx +++ /dev/null @@ -1,166 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// TGC_CnvTool.cxx, (c) ATLAS Detector software -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -#include "STGC_RawDataToPrepDataTool.h" - -#include "GaudiKernel/ISvcLocator.h" - -#include "MuonReadoutGeometry/MuonDetectorManager.h" -#include "MuonReadoutGeometry/sTgcReadoutElement.h" - -#include "TrkSurfaces/Surface.h" - -#include "MuonCnvToolInterfaces/IDC_Helper.h" - -#include "EventPrimitives/EventPrimitives.h" -// BS access -#include "MuonCnvToolInterfaces/IMuonRawDataProviderTool.h" - -#include <cfloat> -#include <algorithm> - -//================ Constructor ================================================= - -Muon::STGC_RawDataToPrepDataTool::STGC_RawDataToPrepDataTool(const std::string& t, const std::string& n, const IInterface* p) - : AthAlgTool(t, n, p), - m_muonMgr(0), - m_rawDataProviderTool("Muon::sTGC_RawDataProviderTool/sTGC_RawDataProviderTool"), - m_RDO_Key("sTGCRDO"), - m_PRD_Key("sTGC_Measurements") -{ - declareProperty("RawDataProviderTool", m_rawDataProviderTool); - declareProperty("RDOContainer", m_RDO_Key); - declareProperty("OutputCollection", m_PRD_Key); -} - -//================ Destructor ================================================= - -Muon::STGC_RawDataToPrepDataTool::~STGC_RawDataToPrepDataTool() -{} - -//___________________________________________________________________________ -StatusCode Muon::STGC_RawDataToPrepDataTool::queryInterface(const InterfaceID& riid, void** ppvIf) -{ - if(riid==IMuonRdoToPrepDataTool::interfaceID()) { - *ppvIf = (IMuonRdoToPrepDataTool*)this; - addRef(); - return StatusCode::SUCCESS; - } - - return AthAlgTool::queryInterface(riid, ppvIf); -} - - -//================ Initialization ================================================= - -StatusCode Muon::STGC_RawDataToPrepDataTool::initialize() -{ - StatusCode sc = AthAlgTool::initialize(); - if(sc.isFailure()) return sc; - - sc = detStore()->retrieve(m_muonMgr); - if(sc.isFailure()) { - ATH_MSG_FATAL("Cannot retrieve MuonDetectorManager"); - return sc; - } - - m_rawDataProviderTool.disable(); // never used??? - - /// get tgcIdHelper from muonMgr - m_sTGC_Helper = m_muonMgr->stgcIdHelper(); - - ATH_CHECK(m_RDO_Key.initialize()); - ATH_CHECK(m_PRD_Key.initialize()); - - ATH_MSG_INFO("initialize() successful in " << name()); - return StatusCode::SUCCESS; -} - -//================ Finalization ================================================= - -StatusCode Muon::STGC_RawDataToPrepDataTool::finalize() -{ - StatusCode sc = AthAlgTool::finalize(); - return sc; -} - -//================ Decoding ================================================= -StatusCode Muon::STGC_RawDataToPrepDataTool::decode(std::vector<IdentifierHash>& requestedIdHashVect, - std::vector<IdentifierHash>& /*selectedIdHashVect*/) -{ - int sizeVectorRequested = requestedIdHashVect.size(); - ATH_MSG_DEBUG("decode for " << sizeVectorRequested << " offline collections called"); - - // clear output vector of selected data collections containing data - // selectedIdHashVect.clear(); - // - // if(!evtStore()->contains<Muon::sTgcPrepDataContainer>( m_PRD_Key )) { - // // initialize with false - // // std::fill(m_decodedOnlineId.begin(), m_decodedOnlineId.end(), false); - // SG::WriteHandle<sTgcPrepDataContainer> handle(m_PRD_Key); - // - // // record the container in storeGate - // auto prds = std::make_unique<sTgcPrepDataContainer> (m_sTGC_Helper->module_hash_max()); - // ATH_CHECK( handle.record (std::move (prds)) ); - // - // // cache the pointer, storegate retains ownership - // sTgcPrepDataContainer* stgcPrepDataContainer = handle.ptr(); - // } - - // seeded or unseeded decoding - // if (sizeVectorRequested != 0) { - // processPRDHashes(idVect,idWithDataVect, *stgcPrepDataContainer); - // } else { - // processRDOContainer(idWithDataVect, *stgcPrepDataContainer); - // } - - return StatusCode::SUCCESS; -} - -void Muon::STGC_RawDataToPrepDataTool::processPRDHashes( const std::vector<IdentifierHash>& chamberHashInRobs, std::vector<IdentifierHash>& idWithDataVect, sTgcPrepDataContainer& prds ){ - - // get RDO container - - SG::ReadHandle<STGC_RawDataContainer> rdos(m_RDO_Key); - const STGC_RawDataContainer* rdoContainer = rdos.get(); - - if(!rdoContainer) { - return; - } - - for( auto it = chamberHashInRobs.begin(); it != chamberHashInRobs.end(); ++it ){ - if(!handlePRDHash(*it,*rdoContainer,idWithDataVect, prds) ) { - ATH_MSG_DEBUG("Failed to process hash " << *it ); - } - }//ends loop over chamberhash -} - -bool Muon::STGC_RawDataToPrepDataTool::handlePRDHash( IdentifierHash /*hash*/, const STGC_RawDataContainer& /*rdoContainer*/, std::vector<IdentifierHash>& /*idWithDataVect*/, sTgcPrepDataContainer& /*prds*/ ) { - - // if in prep data the chamber already exists ... do nothing - // if( m_mdtPrepDataContainer->indexFind(hash) != m_mdtPrepDataContainer->end() ) return true; - // - // IdentifierHash rdoHash = hash; // before BMEs were installed, RDOs were indexed by offline hashes (same as PRD) - // // process CSM if data was found - // STGC_RawDataContainer::const_iterator rdoColli = rdoContainer.indexFind(rdoHash); - // if( rdoColli != rdoContainer.end() ) { - // rdoColli->push_back(new STGC_RawData() ); - // } else { - // ATH_MSG_DEBUG("handlePRDHash: hash id " << (unsigned int)(hash) << " not found in RDO container"); - // } - return true; -} - -void Muon::STGC_RawDataToPrepDataTool::printPrepData() { - -} - -void Muon::STGC_RawDataToPrepDataTool::printInputRdo() { - -} - diff --git a/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataToPrepDataTool.h b/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataToPrepDataTool.h deleted file mode 100644 index 36215e66e76185b51693a34342c1d542c363785f..0000000000000000000000000000000000000000 --- a/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataToPrepDataTool.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -/////////////////////////////////////////////////////////////////// -// STGC_RawDataToPrepDataTool.h, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// -#ifndef MUONATGC_CNVTOOLS_STGC_RAWDATATOPREPDATATOOL -#define MUONATGC_CNVTOOLS_STGC_RAWDATATOPREPDATATOOL - -#include "AthenaBaseComps/AthAlgTool.h" -#include "MuonCnvToolInterfaces/IMuonRdoToPrepDataTool.h" -#include <string> - -#include "GaudiKernel/ToolHandle.h" -#include "MuonRDO/STGC_RawDataContainer.h" -#include "MuonPrepRawData/sTgcPrepDataContainer.h" - -class AtlasDetectorID; -class Identifier; - -class ITGCcablingSvc; -class sTgcIdHelper; - -namespace MuonGM -{ - class MuonDetectorManager; - class TgcReadoutElement; -} - -namespace Muon -{ - class IMuonRawDataProviderTool; - - /** @class STGC_RawDataToPrepDataTool - * This is the algorithm that convert STGC Raw data To STGC PRD as a tool. - */ - - class STGC_RawDataToPrepDataTool : virtual public IMuonRdoToPrepDataTool, virtual public AthAlgTool - { - public: - /** Constructor */ - STGC_RawDataToPrepDataTool(const std::string& t, const std::string& n, const IInterface* p); - - /** Destructor */ - virtual ~STGC_RawDataToPrepDataTool(); - - /** Query the IMuonRdoToPrepDataTool interface */ - virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvIf) override; - - /** Standard AthAlgTool initialize method */ - virtual StatusCode initialize() override; - /** Standard AthAlgTool finalize method */ - virtual StatusCode finalize() override; - - /** Decode RDO to PRD - * A vector of IdentifierHash are passed in, and the data corresponding to this list (i.e. in a Region of Interest) are converted. - * @param requestedIdHashVect Vector of hashes to convert i.e. the hashes of ROD collections in a 'Region of Interest' - * @return selectedIdHashVect This is the subset of requestedIdVect which were actually found to contain data - * (i.e. if you want you can use this vector of hashes to optimise the retrieval of data in subsequent steps.) */ - virtual StatusCode decode(std::vector<IdentifierHash>& idVect, std::vector<IdentifierHash>& idWithDataVect) override; - - virtual void printPrepData() override; - virtual void printInputRdo() override; - - /** Resolve possible conflicts with IProperty::interfaceID() */ - static const InterfaceID& interfaceID() { return IMuonRdoToPrepDataTool::interfaceID(); } - - private: - - void processPRDHashes( const std::vector<IdentifierHash>& chamberHashInRobs, std::vector<IdentifierHash>& idWithDataVect, sTgcPrepDataContainer& prds ); - bool handlePRDHash( IdentifierHash hash, const STGC_RawDataContainer& rdoContainer, std::vector<IdentifierHash>& idWithDataVect, sTgcPrepDataContainer& prds ); - - /** muon detector manager */ - const MuonGM::MuonDetectorManager * m_muonMgr; - - /** TGC identifier helper */ - const sTgcIdHelper* m_sTGC_Helper; - - /** TgcPrepRawData container key for current BC */ - std::string m_outputCollectionLocation; - - /** ToolHandle of the TGC_RawDataProviderTool */ - ToolHandle<IMuonRawDataProviderTool> m_rawDataProviderTool; - - SG::ReadHandleKey<STGC_RawDataContainer> m_RDO_Key;//"TGCRDO" - SG::WriteHandleKey<sTgcPrepDataContainer> m_PRD_Key; - - /** Aboid compiler warning **/ - virtual StatusCode decode( const std::vector<uint32_t>& /*robIds*/ ) override {return StatusCode::FAILURE;} - }; -} // end of namespace - -#endif // MUONTGC_CNVTOOLS_TGCRDOTOPREPDATATOOL_H diff --git a/MuonSpectrometer/MuonRDO/MuonRDO/MM_RawDataContainer.h b/MuonSpectrometer/MuonRDO/MuonRDO/MM_RawDataContainer.h index 42e6b48a50112631fa9c7a02c299e85aed4ebcf4..339fc829e1490617f59a6bad54eb4145563018ff 100755 --- a/MuonSpectrometer/MuonRDO/MuonRDO/MM_RawDataContainer.h +++ b/MuonSpectrometer/MuonRDO/MuonRDO/MM_RawDataContainer.h @@ -17,6 +17,7 @@ class MM_RawDataContainer { public: MM_RawDataContainer(unsigned int hashmax); + MM_RawDataContainer(); virtual ~MM_RawDataContainer(); /// class ID diff --git a/MuonSpectrometer/MuonRDO/MuonRDO/STGC_RawDataContainer.h b/MuonSpectrometer/MuonRDO/MuonRDO/STGC_RawDataContainer.h index b394af3ef3bb8b12add9d64ec8aeaaeae31774f4..5283fd3c5304d577e341406fe0beceaec797911b 100755 --- a/MuonSpectrometer/MuonRDO/MuonRDO/STGC_RawDataContainer.h +++ b/MuonSpectrometer/MuonRDO/MuonRDO/STGC_RawDataContainer.h @@ -16,6 +16,7 @@ class STGC_RawDataContainer : public IdentifiableContainer<STGC_RawDataCollection> { public: + STGC_RawDataContainer(); STGC_RawDataContainer(unsigned int hashmax); ~STGC_RawDataContainer(); diff --git a/MuonSpectrometer/MuonRDO/src/MM_RawDataContainer.cxx b/MuonSpectrometer/MuonRDO/src/MM_RawDataContainer.cxx index 5633cce5cb9370474ad7ff1b88d08e10176fb37d..869216a5ec0c780e8a285b4cb3afa36d2b00a532 100755 --- a/MuonSpectrometer/MuonRDO/src/MM_RawDataContainer.cxx +++ b/MuonSpectrometer/MuonRDO/src/MM_RawDataContainer.cxx @@ -6,6 +6,11 @@ #include <iostream> #include "EventContainers/SelectAllObject.h" +Muon::MM_RawDataContainer::MM_RawDataContainer() +: IdentifiableContainer<MM_RawDataCollection>(0) +{ +} + Muon::MM_RawDataContainer::MM_RawDataContainer(unsigned int hashmax) : IdentifiableContainer<MM_RawDataCollection>(hashmax) { diff --git a/MuonSpectrometer/MuonRDO/src/STGC_RawDataContainer.cxx b/MuonSpectrometer/MuonRDO/src/STGC_RawDataContainer.cxx index 65dce06fd14ed74f07595eb55a625c5500a403be..3db6dae06e772a8e91fd843e698b6a9b62ff0257 100755 --- a/MuonSpectrometer/MuonRDO/src/STGC_RawDataContainer.cxx +++ b/MuonSpectrometer/MuonRDO/src/STGC_RawDataContainer.cxx @@ -5,6 +5,11 @@ #include "MuonRDO/STGC_RawDataContainer.h" #include <iostream> +Muon::STGC_RawDataContainer::STGC_RawDataContainer() + : IdentifiableContainer<STGC_RawDataCollection>(0) +{ +} + Muon::STGC_RawDataContainer::STGC_RawDataContainer(unsigned int hashmax) : IdentifiableContainer<STGC_RawDataCollection>(hashmax) { diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.h b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.h index 315065061a9d6435d128d7f596b498c9ee84c069..2cd3041e7525dd9d83ee5065a601bcc84c3ecfe3 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.h +++ b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.h @@ -26,6 +26,9 @@ #include "MuonPrepRawData/MdtPrepData.h" #include "MuonPrepRawData/RpcPrepData.h" #include "MuonPrepRawData/TgcPrepData.h" +// New Small Wheel +#include "MuonPrepRawData/MMPrepData.h" +#include "MuonPrepRawData/sTgcPrepData.h" #include "MuonPrepRawData/MuonPrepDataCollection.h" @@ -39,6 +42,9 @@ class MuonPrepDataContainer : public IdentifiableContainer<CollectionT> { // Public methods: /////////////////////////////////////////////////////////////////// public: + + //default for POOL + MuonPrepDataContainer(); // Constructor with parameters: MuonPrepDataContainer(unsigned int max); @@ -90,7 +96,7 @@ private: /////////////////////////////////////////////////////////////////// // Inline methods: /////////////////////////////////////////////////////////////////// - + typedef MuonPrepDataCollection< MdtPrepData > MdtPrepDataCollection; typedef MuonPrepDataContainer< MdtPrepDataCollection > MdtPrepDataContainer; @@ -100,6 +106,13 @@ typedef MuonPrepDataContainer< RpcPrepDataCollection > RpcPrepDataContainer; typedef MuonPrepDataCollection< TgcPrepData > TgcPrepDataCollection; typedef MuonPrepDataContainer< TgcPrepDataCollection > TgcPrepDataContainer; +// New Small Wheel +typedef MuonPrepDataCollection< sTgcPrepData > sTgcPrepDataCollection; +typedef MuonPrepDataContainer< sTgcPrepDataCollection > sTgcPrepDataContainer; + +typedef MuonPrepDataCollection< MMPrepData > MMPrepDataCollection; +typedef MuonPrepDataContainer< MMPrepDataCollection > MMPrepDataContainer; + // member functions that use Collection T #include "MuonPrepRawData/MuonPrepDataContainer.icc" @@ -110,6 +123,9 @@ typedef MuonPrepDataContainer< TgcPrepDataCollection > TgcPrepDataContainer; #include "MuonPrepRawData/RpcPrepDataContainer.h" #include "MuonPrepRawData/TgcPrepDataContainer.h" #include "MuonPrepRawData/MdtPrepDataContainer.h" +// New Small Wheel +#include "MuonPrepRawData/sTgcPrepDataContainer.h" +#include "MuonPrepRawData/MMPrepDataContainer.h" #endif // TRKPREPRAWDATA_PREPRAWDATACONTAINER_H diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.icc b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.icc index 1bad1c5c8caa08a4d8b594ad010ad159d3d16a6a..3d25d2b38141cdfbc3bc0d9fe779a6322b0c839c 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.icc +++ b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonPrepDataContainer.icc @@ -12,6 +12,12 @@ /////////////////////////////////////////////////////////////////// +/// constructor for POOL with no parameters +template< class CollectionT> +MuonPrepDataContainer< CollectionT>::MuonPrepDataContainer() : + IdentifiableContainer<CollectionT>(0) +{ +} template< class CollectionT> // Constructor with parameters: diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/sTgcPrepData.h b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/sTgcPrepData.h index 499d45a91b63b73dc95176e6d76e9c00d7e00c7e..7846ba76202cac0ed426a3ae2a5585c8d0113f7b 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/sTgcPrepData.h +++ b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/sTgcPrepData.h @@ -52,6 +52,7 @@ namespace Muon const std::vector<Identifier>& rdoList, const Amg::MatrixX* locErrMat, const MuonGM::sTgcReadoutElement* detEl, + const int charge = 0, const uint16_t bcBitMap=0); @@ -74,6 +75,7 @@ namespace Muon /** @brief Returns the bcBitMap of this PRD bit2 for Previous BC, bit1 for Current BC, bit0 for Next BC */ + int charge() const; uint16_t getBcBitMap() const; enum {BCBIT_UNDEFINED=0, BCBIT_NEXT=1, BCBIT_CURRENT=2, BCBIT_PREVIOUS=4}; @@ -81,6 +83,7 @@ namespace Muon /** Cached pointer to the detector element - should never be zero.*/ const MuonGM::sTgcReadoutElement* m_detEl; + int m_charge; uint16_t m_bcBitMap; }; @@ -98,6 +101,11 @@ namespace Muon return *m_globalPosition; } + inline int sTgcPrepData::charge() const + { + return m_charge; + } + inline uint16_t sTgcPrepData::getBcBitMap() const { return m_bcBitMap; diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/MMPrepData.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/MMPrepData.cxx index 760428b969722b12845a5b69c24e7f19c3e53302..f9ae7e52319844d0b014b425bc2d0341a2009fe5 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/MMPrepData.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/MMPrepData.cxx @@ -52,16 +52,16 @@ namespace Muon MMPrepData::MMPrepData(const MMPrepData& RIO): MuonCluster(RIO), m_detEl( RIO.m_detEl ), - m_time(0), - m_charge(0) + m_time(RIO.m_time), + m_charge(RIO.m_charge) { } //move constructor: MMPrepData::MMPrepData(MMPrepData&& RIO): MuonCluster(std::move(RIO)), m_detEl( RIO.m_detEl ), - m_time(0), - m_charge(0) + m_time(RIO.m_time), + m_charge(RIO.m_charge) { } //assignment operator @@ -72,6 +72,8 @@ namespace Muon { MuonCluster::operator=(RIO); m_detEl = RIO.m_detEl ; + m_time = RIO.m_time; + m_charge = RIO.m_charge; } return *this; @@ -84,6 +86,8 @@ namespace Muon { MuonCluster::operator=(std::move(RIO)); m_detEl = RIO.m_detEl ; + m_time = RIO.m_time ; + m_charge = RIO.m_charge ; } return *this; diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/sTgcPrepData.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/sTgcPrepData.cxx index c89b406ba05f6be55b88641194362aaab3bfaaa3..c284a3cff173628a8d33325266f93c176064df7d 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/sTgcPrepData.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/src/sTgcPrepData.cxx @@ -14,12 +14,15 @@ namespace Muon const std::vector<Identifier>& rdoList, const Amg::MatrixX* locErrMat, const MuonGM::sTgcReadoutElement* detEl, + const int charge, const uint16_t bcBitMap ) : MuonCluster(RDOId, idDE, locpos, rdoList, locErrMat), //call base class constructor m_detEl(detEl), + m_charge(charge), m_bcBitMap(bcBitMap) { } + // Destructor: sTgcPrepData::~sTgcPrepData() { @@ -30,6 +33,7 @@ namespace Muon sTgcPrepData::sTgcPrepData(): MuonCluster(), m_detEl(0), + m_charge(0), m_bcBitMap(0) { } @@ -37,6 +41,7 @@ namespace Muon sTgcPrepData::sTgcPrepData(const sTgcPrepData& RIO): MuonCluster(RIO), m_detEl( RIO.m_detEl ), + m_charge( RIO.m_charge ), m_bcBitMap( RIO.m_bcBitMap ) { } @@ -44,6 +49,7 @@ namespace Muon sTgcPrepData::sTgcPrepData(sTgcPrepData&& RIO): MuonCluster(std::move(RIO)), m_detEl( RIO.m_detEl ), + m_charge( RIO.m_charge ), m_bcBitMap( RIO.m_bcBitMap ) { } @@ -55,6 +61,7 @@ namespace Muon { MuonCluster::operator=(RIO); m_detEl = RIO.m_detEl ; + m_charge = RIO.m_charge; m_bcBitMap = RIO.m_bcBitMap; } return *this; @@ -69,6 +76,7 @@ namespace Muon { MuonCluster::operator=(std::move(RIO)); m_detEl = RIO.m_detEl ; + m_charge = RIO.m_charge; m_bcBitMap = RIO.m_bcBitMap; } return *this;