diff --git a/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTKDetectorTool.h b/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTKDetectorTool.h index 0a0f8a0b9d2378aece70c9ef95d9a2020cb2f9b3..cd43c97ae0812bfa8d6b9c0899a822748bae339d 100644 --- a/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTKDetectorTool.h +++ b/Trigger/TrigFTK/TrigFTKSim/TrigFTKSim/FTKDetectorTool.h @@ -32,21 +32,15 @@ #include "TrkTrackSummaryTool/TrackSummaryTool.h" #include "TrkToolInterfaces/ITrackHoleSearchTool.h" #include "InDetBeamSpotService/IBeamCondSvc.h" +#include "StoreGate/ReadCondHandleKey.h" #include "StoreGate/StoreGateSvc.h" #include "StoreGate/DataHandle.h" #include "HepPDT/ParticleDataTable.hh" #include "HepPDT/ParticleData.hh" -#include "InDetIdentifier/PixelID.h" -#include "InDetIdentifier/SCT_ID.h" -#include "InDetIdentifier/TRT_ID.h" -#include "InDetPrepRawData/SiClusterContainer.h" -#include "InDetReadoutGeometry/SiDetectorManager.h" -#include "InDetReadoutGeometry/PixelDetectorManager.h" -#include "InDetReadoutGeometry/SCT_DetectorManager.h" -#include "InDetReadoutGeometry/TRT_DetectorManager.h" - #include "InDetConditionsSummaryService/IInDetConditionsTool.h" +#include "InDetPrepRawData/SiClusterContainer.h" +#include "InDetReadoutGeometry/SiDetectorElementCollection.h" class AtlasDetectorID; class StoreGateSvc; @@ -58,7 +52,7 @@ class IBeamCondSvc; class EventID; namespace InDetDD { - class SiDetectorManager; + class PixelDetectorManager; } namespace HepPDT { class ParticleDataTable; @@ -80,8 +74,7 @@ class FTKDetectorTool : virtual public FTKDetectorToolI, StoreGateSvc* m_detStore; StoreGateSvc* m_evtStore; - const InDetDD::SiDetectorManager* m_PIX_mgr; - const InDetDD::SiDetectorManager* m_SCT_mgr; + const InDetDD::PixelDetectorManager* m_PIX_mgr; const InDet::SiClusterContainer* m_pixelContainer; const InDet::SiClusterContainer* m_sctContainer; @@ -89,6 +82,8 @@ class FTKDetectorTool : virtual public FTKDetectorToolI, ToolHandle<IInDetConditionsTool> m_pixelCondSummaryTool; // tool to retrieve pixel conditions db ToolHandle<IInDetConditionsTool> m_sctCondSummaryTool{this, "SctSummaryTool", "SCT_ConditionsSummaryTool/InDetSCT_ConditionsSummaryTool", "Tool to retrieve SCT Conditions Summary"}; // tool to retrieve SCT conditions db + + SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> m_SCTDetEleCollKey{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}; const PixelID* m_pixelId; const SCT_ID* m_sctId; diff --git a/Trigger/TrigFTK/TrigFTKSim/src/FTKDetectorTool.cxx b/Trigger/TrigFTK/TrigFTKSim/src/FTKDetectorTool.cxx index 3871dc760dc5f5b4519d30c4da2ede16663ec126..dfdce58a583411f8e21f477c585ca906d89475d5 100644 --- a/Trigger/TrigFTK/TrigFTKSim/src/FTKDetectorTool.cxx +++ b/Trigger/TrigFTK/TrigFTKSim/src/FTKDetectorTool.cxx @@ -8,6 +8,12 @@ #include "EventInfo/EventInfo.h" #include "EventInfo/EventID.h" +#include "InDetIdentifier/PixelID.h" +#include "InDetIdentifier/SCT_ID.h" +#include "InDetReadoutGeometry/PixelDetectorManager.h" + +#include "StoreGate/ReadCondHandle.h" + #include <fstream> #include <iostream> @@ -25,7 +31,6 @@ FTKDetectorTool::FTKDetectorTool(const std::string &algname,const std::string &n , m_detStore( 0 ) , m_evtStore( 0 ) , m_PIX_mgr( 0 ) - , m_SCT_mgr( 0 ) , m_pixelContainer( 0 ) , m_sctContainer( 0 ) , m_pixelCondSummaryTool("PixelConditionsSummaryTool",this) @@ -87,10 +92,6 @@ StatusCode FTKDetectorTool::initialize() m_log << MSG::ERROR << "Unable to retrieve Pixel helper from DetectorStore" << endmsg; return StatusCode::FAILURE; } - if( m_detStore->retrieve(m_SCT_mgr, "SCT").isFailure() ) { - m_log << MSG::ERROR << "Unable to retrieve SCT manager from DetectorStore" << endmsg; - return StatusCode::FAILURE; - } if( m_detStore->retrieve(m_sctId, "SCT_ID").isFailure() ) { m_log << MSG::ERROR << "Unable to retrieve SCT helper from DetectorStore" << endmsg; return StatusCode::FAILURE; @@ -130,6 +131,10 @@ StatusCode FTKDetectorTool::initialize() return StatusCode::FAILURE; } } + + // ReadCondHandleKey + ATH_CHECK(m_SCTDetEleCollKey.initialize()); + return StatusCode::SUCCESS; } @@ -170,10 +175,11 @@ void FTKDetectorTool::makeBadModuleMap(){ } // take the list of the dead SCT modules - for( InDetDD::SiDetectorElementCollection::const_iterator i=m_SCT_mgr->getDetectorElementBegin(), f=m_SCT_mgr->getDetectorElementEnd() ; i!=f; ++i ) { - const InDetDD::SiDetectorElement* sielement( *i ); - Identifier id = sielement->identify(); - IdentifierHash idhash = sielement->identifyHash(); + SCT_ID::const_id_iterator wafer_it = m_sctId->wafer_begin(); + SCT_ID::const_id_iterator wafer_end = m_sctId->wafer_end(); + for (; wafer_it!=wafer_end; wafer_it++) { + const Identifier id = *wafer_it; + const IdentifierHash idhash = m_sctId->wafer_hash(id); bool is_bad = !(m_sctCondSummaryTool->isGood( idhash )); if(m_dumpAllModules) is_bad =true; if(is_bad){ @@ -242,10 +248,11 @@ void FTKDetectorTool::dumpDeadModuleSummary() << std::endl; } } - for( InDetDD::SiDetectorElementCollection::const_iterator i=m_SCT_mgr->getDetectorElementBegin(), f=m_SCT_mgr->getDetectorElementEnd(); i!=f; ++i ) { - const InDetDD::SiDetectorElement* sielement( *i ); - Identifier id = sielement->identify(); - IdentifierHash idhash = sielement->identifyHash(); + SCT_ID::const_id_iterator wafer_it = m_sctId->wafer_begin(); + SCT_ID::const_id_iterator wafer_end = m_sctId->wafer_end(); + for (; wafer_it!=wafer_end; wafer_it++) { + const Identifier id = *wafer_it; + const IdentifierHash idhash = m_sctId->wafer_hash(id); bool is_bad = !(m_sctCondSummaryTool->isGood( idhash )); if(m_dumpAllModules) is_bad =true; if(is_bad){ @@ -295,10 +302,11 @@ void FTKDetectorTool::dumpModuleIDMap() Identifier id = sielement->identify(); IdentifierHash idhash = sielement->identifyHash(); } - for( InDetDD::SiDetectorElementCollection::const_iterator i=m_SCT_mgr->getDetectorElementBegin(), f=m_SCT_mgr->getDetectorElementEnd(); i!=f; ++i ) { - const InDetDD::SiDetectorElement* sielement( *i ); - Identifier id = sielement->identify(); - IdentifierHash idhash = sielement->identifyHash(); + SCT_ID::const_id_iterator wafer_it = m_sctId->wafer_begin(); + SCT_ID::const_id_iterator wafer_end = m_sctId->wafer_end(); + for (; wafer_it!=wafer_end; wafer_it++) { + const Identifier id = *wafer_it; + const IdentifierHash idhash = m_sctId->wafer_hash(id); } #endif } @@ -347,10 +355,11 @@ void FTKDetectorTool::dumpGlobalToLocalModuleMap() { countForSRAM = 0; - for( InDetDD::SiDetectorElementCollection::const_iterator i=m_SCT_mgr->getDetectorElementBegin(), f=m_SCT_mgr->getDetectorElementEnd() ; i!=f; ++i ) { - const InDetDD::SiDetectorElement* sielement( *i ); - Identifier id = sielement->identify(); - IdentifierHash idhash = sielement->identifyHash(); + SCT_ID::const_id_iterator wafer_it = m_sctId->wafer_begin(); + SCT_ID::const_id_iterator wafer_end = m_sctId->wafer_end(); + for (; wafer_it!=wafer_end; wafer_it++) { + const Identifier id = *wafer_it; + const IdentifierHash idhash = m_sctId->wafer_hash(id); FTKRawHit tmpmodraw; @@ -456,8 +465,13 @@ void FTKDetectorTool::dumpIDMap() } // take the list of the dead SCT modules - for( InDetDD::SiDetectorElementCollection::const_iterator i=m_SCT_mgr->getDetectorElementBegin(), f=m_SCT_mgr->getDetectorElementEnd() ; i!=f; ++i ) { - const InDetDD::SiDetectorElement* sielement( *i ); + SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> sctDetEle(m_SCTDetEleCollKey); + const InDetDD::SiDetectorElementCollection* sctElements(sctDetEle.retrieve()); + if (sctElements==nullptr) { + ATH_MSG_FATAL(m_SCTDetEleCollKey.fullKey() << " could not be retrieved"); + return; + } + for (const InDetDD::SiDetectorElement* sielement: *sctElements) { Identifier id = sielement->identify(); IdentifierHash idhash = sielement->identifyHash(); const bool is_bad = !(m_sctCondSummaryTool->isGood( idhash )); @@ -483,6 +497,14 @@ void FTKDetectorTool::dumpIDMap() void FTKDetectorTool::dumpModulePositions() { m_log << MSG::INFO << "dumpModulePositions"<< endmsg; + + SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> sctDetEle(m_SCTDetEleCollKey); + const InDetDD::SiDetectorElementCollection* sctElements(sctDetEle.retrieve()); + if (sctElements==nullptr) { + ATH_MSG_FATAL(m_SCTDetEleCollKey.fullKey() << " could not be retrieved"); + return; + } + TFile *output=new TFile("FTKmodulePositions.root","recreate"); TTree *t=new TTree("modulePositions","modulePositions"); Int_t idhash; @@ -519,8 +541,8 @@ void FTKDetectorTool::dumpModulePositions() { t->Branch("isbad",&isbad,"isbad/I"); t->Branch("hitSector",&hitSector,"hitSector/I"); InDetDD::SiDetectorElementCollection::const_iterator iStart[2],iEnd[2]; - iStart[0]=m_SCT_mgr->getDetectorElementBegin(); - iEnd[0]=m_SCT_mgr->getDetectorElementEnd(); + iStart[0]=sctElements->begin(); + iEnd[0]=sctElements->end(); iStart[1]=m_PIX_mgr->getDetectorElementBegin(); iEnd[1]=m_PIX_mgr->getDetectorElementEnd(); for(isPixel=0;isPixel<2;isPixel++) {