diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/share/testFlagged.py b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/share/testFlagged.py new file mode 100644 index 0000000000000000000000000000000000000000..2c8242ffd39de50277b8e3d3f1393cc3eaa5f0d9 --- /dev/null +++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/share/testFlagged.py @@ -0,0 +1,104 @@ +import AthenaCommon.AtlasUnixStandardJob + +# Setup logger +from AthenaCommon.Logging import logging +msg = logging.getLogger("testBSError") +msg.setLevel(logging.INFO) + +#-------------------------------------------------------------- +# Thread-specific setup +#-------------------------------------------------------------- +from AthenaCommon.ConcurrencyFlags import jobproperties +numThreads = jobproperties.ConcurrencyFlags.NumThreads() +if numThreads > 0: + from AthenaCommon.AlgScheduler import AlgScheduler + AlgScheduler.CheckDependencies( True ) + AlgScheduler.ShowControlFlow( True ) + AlgScheduler.ShowDataDependencies( True ) + +# use auditors +from AthenaCommon.AppMgr import ServiceMgr +from GaudiSvc.GaudiSvcConf import AuditorSvc +ServiceMgr += AuditorSvc() +theAuditorSvc = ServiceMgr.AuditorSvc +theAuditorSvc.Auditors += ["ChronoAuditor"] +theAuditorSvc.Auditors += ["MemStatAuditor"] +theApp.AuditAlgorithms=True + + +#-------------------------------------------------------------- +# Load Geometry +#-------------------------------------------------------------- +from AthenaCommon.GlobalFlags import globalflags +globalflags.DetDescrVersion="ATLAS-R2-2016-01-00-01" +globalflags.DetGeo="atlas" +globalflags.InputFormat="pool" +globalflags.DataSource="data" +msg.info(globalflags) + +#-------------------------------------------------------------- +# Set Detector setup +#-------------------------------------------------------------- +# --- switch on InnerDetector +from AthenaCommon.DetFlags import DetFlags +DetFlags.ID_setOff() +DetFlags.Calo_setOff() +DetFlags.Muon_setOff() +DetFlags.Truth_setOff() +DetFlags.LVL1_setOff() +DetFlags.SCT_setOn() + +# ---- switch parts of ID off/on as follows +#switch off tasks +DetFlags.pileup.all_setOff() +DetFlags.simulate.all_setOff() +DetFlags.makeRIO.all_setOff() +DetFlags.writeBS.all_setOff() +DetFlags.readRDOBS.all_setOff() +DetFlags.readRIOBS.all_setOff() +DetFlags.readRIOPool.all_setOff() +DetFlags.writeRIOPool.all_setOff() + + + +import AtlasGeoModel.SetGeometryVersion +import AtlasGeoModel.GeoModelInit + +from AthenaCommon.AlgSequence import AlgSequence + +job = AlgSequence() + +#-------------------------------------------------------------- +# Load IOVDbSvc +#-------------------------------------------------------------- + +IOVDbSvc = Service("IOVDbSvc") +from IOVDbSvc.CondDB import conddb +IOVDbSvc.GlobalTag="CONDBR2-BLKPA-2018-03" + +from SCT_ConditionsTools.SCT_FlaggedConditionToolSetup import SCT_FlaggedConditionToolSetup +sct_FlaggedConditionToolSetup = SCT_FlaggedConditionToolSetup() +sct_FlaggedConditionToolSetup.setup() +SCT_FlaggedConditionTool = sct_FlaggedConditionToolSetup.getTool() + +SCT_FlaggedConditionTool.OutputLevel=DEBUG + +from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConf import SCT_FlaggedConditionTestAlg +job+= SCT_FlaggedConditionTestAlg(FlaggedConditionTool=SCT_FlaggedConditionTool) + +from AthenaCommon.AthenaCommonFlags import athenaCommonFlags +if numThreads >= 2: + from SCT_ConditionsAlgorithms.SCTCondAlgCardinality import sctCondAlgCardinality + sctCondAlgCardinality.set(numThreads) + job.SCT_FlaggedConditionTestAlg.Cardinality = numThreads + +import AthenaPoolCnvSvc.ReadAthenaPool +from PoolSvc.PoolSvcConf import PoolSvc +ServiceMgr += PoolSvc() + +athenaCommonFlags.FilesInput = [ "./ESD.pool.root" ] +ServiceMgr.EventSelector.InputCollections = athenaCommonFlags.FilesInput.get_Value() + +theApp.EvtMax = -1 + +ServiceMgr.MessageSvc.Format = "% F%50W%S%7W%R%T %0W%M" diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/SCT_FlaggedConditionTestAlg.cxx b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/SCT_FlaggedConditionTestAlg.cxx new file mode 100644 index 0000000000000000000000000000000000000000..9671e1a4c05d9e0232f3ed080af201536207d473 --- /dev/null +++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/SCT_FlaggedConditionTestAlg.cxx @@ -0,0 +1,47 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +/** + * @file SCT_FlaggedConditionTestAlg.cxx + * + * @brief Class to test SCT_FlaggedConditionTool (implementation) + * + * @author Susumu.Oda@cern.ch + **/ + +#include "SCT_FlaggedConditionTestAlg.h" + +SCT_FlaggedConditionTestAlg::SCT_FlaggedConditionTestAlg(const std::string& name, ISvcLocator* pSvcLocator) : + AthReentrantAlgorithm(name, pSvcLocator) { +} + +//Initialize +StatusCode SCT_FlaggedConditionTestAlg::initialize() { + ATH_MSG_INFO("Calling initialize"); + + // Retrieve flagged condition tool + ATH_CHECK(m_flaggedTool.retrieve()); + + return StatusCode::SUCCESS; +} + +//Execute +StatusCode SCT_FlaggedConditionTestAlg::execute(const EventContext& ctx) const { + ATH_MSG_INFO("Calling execute"); + + ATH_MSG_ALWAYS("------------------------------------------------------------"); + ATH_MSG_ALWAYS(" numBadIds " << m_flaggedTool->numBadIds(ctx)); + const SCT_FlaggedCondData* badIds{m_flaggedTool->getBadIds(ctx)}; + for (const std::pair<IdentifierHash, std::string>& badId : *badIds) { + ATH_MSG_ALWAYS(" Wafer hash " << badId.first << " reason " << badId.second); + } + + return StatusCode::SUCCESS; +} + +//Finalize +StatusCode SCT_FlaggedConditionTestAlg::finalize() { + ATH_MSG_INFO("Calling finalize"); + return StatusCode::SUCCESS; +} diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/SCT_FlaggedConditionTestAlg.h b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/SCT_FlaggedConditionTestAlg.h new file mode 100644 index 0000000000000000000000000000000000000000..9e7df0ba4f594b320dea1b935090ceb955e2d307 --- /dev/null +++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/SCT_FlaggedConditionTestAlg.h @@ -0,0 +1,41 @@ +// -*- C++ -*- + +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +/** + * @file SCT_FlaggedConditionTestAlg.h + * + * @brief Class to test SCT_FlaggedConditionTool (header) + * + * @author Susumu.Oda@cern.ch + **/ + +#ifndef SCT_FlaggedConditionTestAlg_H +#define SCT_FlaggedConditionTestAlg_H + +//Athena +#include "AthenaBaseComps/AthReentrantAlgorithm.h" + +#include "SCT_ConditionsTools//ISCT_FlaggedConditionTool.h" + +//Gaudi +#include "GaudiKernel/ToolHandle.h" + +class SCT_FlaggedConditionTestAlg : public AthReentrantAlgorithm { + public: + SCT_FlaggedConditionTestAlg(const std::string& name, ISvcLocator* pSvcLocator); + virtual ~SCT_FlaggedConditionTestAlg() = default; + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext& ctx) const override; + virtual StatusCode finalize() override; + /** Make this algorithm clonable. */ + virtual bool isClonable() const override { return true; }; + + private: + ToolHandle<ISCT_FlaggedConditionTool> m_flaggedTool{this, "FlaggedConditionTool", "InDetSCT_FlaggedConditionTool", "Tool to retrieve SCT flagged condition"}; +}; + +#endif // SCT_FlaggedConditionTestAlg_H diff --git a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/components/SCT_ConditionsAlgorithms_entries.cxx b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/components/SCT_ConditionsAlgorithms_entries.cxx index 58928ac93b78130ff8c31abb90362219395ef6e7..f64c33a7826e71af30bde65b24d5c3811f19ecf1 100644 --- a/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/components/SCT_ConditionsAlgorithms_entries.cxx +++ b/InnerDetector/InDetConditions/SCT_ConditionsAlgorithms/src/components/SCT_ConditionsAlgorithms_entries.cxx @@ -10,6 +10,7 @@ #include "../SCT_DCSConditionsTempCondAlg.h" #include "../SCT_DCSConditionsTestAlg.h" #include "../SCT_DetectorElementCondAlg.h" +#include "../SCT_FlaggedConditionTestAlg.h" #include "../SCT_LinkMaskingCondAlg.h" #include "../SCT_LinkMaskingTestAlg.h" #include "../SCT_MajorityCondAlg.h" @@ -47,6 +48,7 @@ DECLARE_COMPONENT( SCT_DCSConditionsStatCondAlg ) DECLARE_COMPONENT( SCT_DCSConditionsTempCondAlg ) DECLARE_COMPONENT( SCT_DCSConditionsTestAlg ) DECLARE_COMPONENT( SCT_DetectorElementCondAlg ) +DECLARE_COMPONENT( SCT_FlaggedConditionTestAlg ) DECLARE_COMPONENT( SCT_LinkMaskingCondAlg ) DECLARE_COMPONENT( SCT_LinkMaskingTestAlg ) DECLARE_COMPONENT( SCT_MajorityCondAlg )