ATLAS Offline Software
PixelConditionsSummaryTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
11 #ifndef PIXELCONDITIONSSERVICES_PIXELCONDITIONSSUMMARYTOOL_H
12 #define PIXELCONDITIONSSERVICES_PIXELCONDITIONSSUMMARYTOOL_H
13 
14 
15 
19 
20 #include "GaudiKernel/ServiceHandle.h"
21 #include "Gaudi/Property.h"
22 
24 
26 #include "Identifier/Identifier.h"
29 
34 
39 
40 #include <string>
41 #include <mutex>
42 #include <tuple>
43 #include <memory>
44 #include <cstdint>//uint64_t
45 #include <vector>
46 #include <bitset>
47 #include <limits>
48 
50  public:
51  static InterfaceID& interfaceID();
52 
53  PixelConditionsSummaryTool(const std::string& type, const std::string& name, const IInterface* parent);
55  virtual StatusCode initialize() override;
56 
57  virtual bool isActive(const Identifier& elementId, const InDetConditions::Hierarchy h, const EventContext& ctx) const override final;
58  virtual bool isActive(const IdentifierHash& moduleHash, const EventContext& ctx) const override final;
59  virtual bool isActive(const IdentifierHash& moduleHash, const Identifier& elementId, const EventContext& ctx) const override final;
60  virtual double activeFraction(const IdentifierHash& moduleHash, const Identifier & idStart, const Identifier & idEnd, const EventContext& ctx) const override final;
61 
62  virtual bool isGood(const Identifier& elementId, const InDetConditions::Hierarchy h, const EventContext& ctx) const override final;
63  virtual bool isGood(const IdentifierHash& moduleHash, const EventContext& ctx) const override final;
64  virtual bool isGood(const IdentifierHash& moduleHash, const Identifier& elementId, const EventContext& ctx, const IDCCacheEntry* cacheEntry=nullptr) const override final;
65  virtual double goodFraction(const IdentifierHash & moduleHash, const Identifier & idStart, const Identifier & idEnd, const EventContext& ctx) const override final;
66 
67  virtual std::unique_ptr<InDet::SiDetectorElementStatus>
68  getDetectorElementStatus(const EventContext& ctx,
69  SG::WriteCondHandle<InDet::SiDetectorElementStatus>* whandle) const override;
70 
71  virtual bool hasBSError(const IdentifierHash& moduleHash, const EventContext& ctx, const IDCCacheEntry* cacheEntry=nullptr) const override final;
72  virtual bool hasBSError(const IdentifierHash& moduleHash, Identifier pixid, const EventContext& ctx, const IDCCacheEntry* cacheEntry=nullptr) const override final;
73  virtual uint64_t getBSErrorWord(const IdentifierHash& moduleHash, const EventContext& ctx, const IDCCacheEntry* cacheEntry=nullptr) const override final;
74  virtual uint64_t getBSErrorWord(const IdentifierHash& moduleHash, const int index, const EventContext& ctx, const IDCCacheEntry* cacheEntry=nullptr) const override final;
75 
76  // public version of getCacheEntry
77  virtual IDCCacheEntry* getCacheEntryOut(const EventContext& ctx) const override final;
78 
79  bool checkChipStatus(IdentifierHash moduleHash, Identifier pixid, const EventContext& ctx) const;
80 
81  private:
82  uint64_t getBSErrorWord(const InDetDD::PixelModuleDesign *p_design,
83  const int index,
84  const EventContext& ctx,
86  bool hasBSError(const InDetDD::PixelModuleDesign *p_design,
87  const IdentifierHash& moduleHash,
88  const EventContext& ctx,
90  const InDetDD::SiDetectorElement *getDetectorEelement(const IdentifierHash& moduleHash, const EventContext& ctx) const;
92 
93  std::vector<std::string> m_isActiveStatus;
94  std::vector<std::string> m_isActiveStates;
95  std::vector<int> m_activeState;
96  std::vector<int> m_activeStatus;
97  unsigned int m_activeStateMask{};
98  unsigned int m_activeStatusMask{};
99 
100  Gaudi::Property<bool> m_useByteStreamFEI4
101  {this, "UseByteStreamFEI4", false, "Switch of the ByteStream error for FEI4"};
102 
103  Gaudi::Property<bool> m_useByteStreamFEI3
104  {this, "UseByteStreamFEI3", false, "Switch of the ByteStream error for FEI3"};
105 
106  Gaudi::Property<bool> m_useByteStreamRD53
107  {this, "UseByteStreamRD53", false, "Switch of the ByteStream error for RD53"};
108 
110  {this, "PixelDCSStateCondData", "PixelDCSStateCondData", "Pixel FSM state key"};
111 
113  {this, "PixelDCSStatusCondData", "PixelDCSStatusCondData", "Pixel FSM status key"};
114 
116  {this, "PixelTDAQCondData", "", "Pixel TDAQ conditions key"}; //Default empty - legacy option
117 
119  {this, "PixelDeadMapCondData", "PixelDeadMapCondData", "Pixel deadmap conditions key"};
120 
122  {this, "PixelByteStreamErrs", "PixelByteStreamErrs", "PixelByteStreamErrs container key"};
123 
125  {this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"};
126 
128  {this, "PixelDetElStatusEventDataBaseKey", "", "Optional event data key of an input SiDetectorElementStatus on which the newly created object will be based."};
130  {this, "PixelDetElStatusCondDataBaseKey", "" , "Optional conditions data key of an input SiDetectorElementStatus on which the newly created object will be based."};
131 
132  Gaudi::Property< bool> m_activeOnly
133  {this, "ActiveOnly", false, "Module and chip status will only reflect whether the modules or chips are active not necessarily whether the signals are good."};
134 
136 
138 
139  /*struct IDCCacheEntry {
140  EventContext::ContextEvt_t eventId = EventContext::INVALID_CONTEXT_EVT; // invalid event ID for the start
141  const IDCInDetBSErrContainer_Cache* IDCCache = nullptr;
142 
143  void reset( EventContext::ContextEvt_t evtId, const IDCInDetBSErrContainer_Cache* cache) {
144  eventId = evtId;
145  IDCCache = cache;
146  }
147 
148  bool needsUpdate( const EventContext& ctx) const {
149  return eventId != ctx.evt() or eventId == EventContext::INVALID_CONTEXT_EVT;
150  }
151 
152  };*/
153  mutable SG::SlotSpecificObj<IDCCacheEntry> m_eventCache ATLAS_THREAD_SAFE; // Guarded by m_cacheMutex
154 
158  [[nodiscard]] const IDCInDetBSErrContainer* getContainer(const EventContext& ctx) const;
159 
165  [[nodiscard]] IDCCacheEntry* getCacheEntry(const EventContext& ctx) const;
166 
170  std::unique_ptr<InDet::SiDetectorElementStatus>
171  createDetectorElementStatus(const EventContext& ctx,
173 
174 };
175 
177  static InterfaceID IID_PixelConditionsSummaryTool("PixelConditionsSummaryTool", 1, 0);
178  return IID_PixelConditionsSummaryTool;
179 }
180 
181 inline bool PixelConditionsSummaryTool::checkChipStatus(IdentifierHash moduleHash, Identifier pixid, const EventContext& ctx) const {
182  std::bitset<16> chipStatus(SG::ReadCondHandle<PixelDeadMapCondData>(m_condDeadMapKey, ctx)->getChipStatus(moduleHash));
183  if (chipStatus.any()) {
184 
185  const InDetDD::SiDetectorElement *element = getDetectorEelement(moduleHash,ctx);
186  const InDetDD::PixelModuleDesign *p_design = static_cast<const InDetDD::PixelModuleDesign*>(&element->design());
187 
188  std::array<InDetDD::PixelDiodeTree::CellIndexType,2> diode_idx
190  m_pixelID->eta_index(pixid));
191  InDetDD::PixelDiodeTree::DiodeProxy si_param ( p_design->diodeProxyFromIdx(diode_idx));
192  std::uint32_t chFE = p_design->getFE(si_param);
193 
194  std::bitset<16> circ;
195  circ.set(chFE);
196  if ((chipStatus&circ).any()) { return false; }
197  }
198  return true;
199 }
200 
201 #endif
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
PixelID::phi_index
int phi_index(const Identifier &id) const
Definition: PixelID.h:639
IInDetConditionsTool.h
PixelDeadMapCondData.h
SG
Forward declaration.
Definition: CaloCellPacker_400_500.h:32
SG::ReadCondHandle
Definition: ReadCondHandle.h:40
InDetDD::PixelModuleDesign
Definition: PixelModuleDesign.h:45
PixelConditionsSummaryTool::checkChipStatus
bool checkChipStatus(IdentifierHash moduleHash, Identifier pixid, const EventContext &ctx) const
Definition: PixelConditionsSummaryTool.h:181
SiDetectorElementStatus.h
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
PixelConditionsSummaryTool::m_activeStatusMask
unsigned int m_activeStatusMask
mask in which each status is represented by a bit and for status values which are cnsidered active th...
Definition: PixelConditionsSummaryTool.h:98
index
Definition: index.py:1
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
IDetectorElementStatusTool
Definition: IDetectorElementStatusTool.h:17
PixelConditionsSummaryTool::hasBSError
virtual bool hasBSError(const IdentifierHash &moduleHash, const EventContext &ctx, const IDCCacheEntry *cacheEntry=nullptr) const override final
Definition: PixelConditionsSummaryTool.cxx:165
PixelTDAQData.h
Store pixel TDAQ information to PixelTDAQData.
IDCInDetBSErrContainer
IDC like storage for BS errors, TODO, customise implementation further so that we store int rather th...
Definition: IDCInDetBSErrContainer.h:19
PixelConditionsSummaryTool::getCacheEntry
IDCCacheEntry * getCacheEntry(const EventContext &ctx) const
Return cache for the current event If, for current slot, the cache is outdated it is retrieved from t...
Definition: PixelConditionsSummaryTool.cxx:94
PixelConditionsSummaryTool::m_isActiveStates
std::vector< std::string > m_isActiveStates
Definition: PixelConditionsSummaryTool.h:94
PixelDCSStateData.h
Store pixel DCS module state in PixelDCSStateData.
PixelConditionsSummaryTool::~PixelConditionsSummaryTool
virtual ~PixelConditionsSummaryTool()
PixelConditionsSummaryTool::getCacheEntryOut
virtual IDCCacheEntry * getCacheEntryOut(const EventContext &ctx) const override final
Definition: PixelConditionsSummaryTool.cxx:109
InDetConditions::Hierarchy
Hierarchy
Definition: InDetHierarchy.h:14
PixelConditionsSummaryTool::isGood
virtual bool isGood(const Identifier &elementId, const InDetConditions::Hierarchy h, const EventContext &ctx) const override final
Definition: PixelConditionsSummaryTool.cxx:270
PixelConditionsSummaryTool::getBSErrorWord
virtual uint64_t getBSErrorWord(const IdentifierHash &moduleHash, const EventContext &ctx, const IDCCacheEntry *cacheEntry=nullptr) const override final
Definition: PixelConditionsSummaryTool.cxx:115
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:560
SG::ReadHandleKey< IDCInDetBSErrContainer >
InDetDD::PixelModuleDesign::getFE
static unsigned int getFE(const PixelDiodeTree::DiodeProxy &diode_proxy)
Definition: PixelModuleDesign.h:258
PixelConditionsSummaryTool::m_condDCSStateKey
SG::ReadCondHandleKey< PixelDCSStateData > m_condDCSStateKey
Definition: PixelConditionsSummaryTool.h:110
InDetDD::PixelModuleDesign::diodeProxyFromIdx
PixelDiodeTree::DiodeProxy diodeProxyFromIdx(const std::array< PixelDiodeTree::IndexType, 2 > &idx) const
Definition: PixelModuleDesign.h:248
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
PixelConditionsSummaryTool::m_condDCSStatusKey
SG::ReadCondHandleKey< PixelDCSStatusData > m_condDCSStatusKey
Definition: PixelConditionsSummaryTool.h:113
PixelConditionsSummaryTool::isActive
virtual bool isActive(const Identifier &elementId, const InDetConditions::Hierarchy h, const EventContext &ctx) const override final
Definition: PixelConditionsSummaryTool.cxx:220
SG::SlotSpecificObj< std::mutex >
PixelConditionsSummaryTool::m_pixelDetElStatusEventKey
SG::ReadHandleKey< InDet::SiDetectorElementStatus > m_pixelDetElStatusEventKey
Definition: PixelConditionsSummaryTool.h:128
PixelConditionsSummaryTool::m_BSErrContReadKey
SG::ReadHandleKey< IDCInDetBSErrContainer > m_BSErrContReadKey
Definition: PixelConditionsSummaryTool.h:122
PixelConditionsSummaryTool::m_activeStateMask
unsigned int m_activeStateMask
mask in which each state is represented by a bit and for states which are cnsidered active the corres...
Definition: PixelConditionsSummaryTool.h:97
PixelConditionsSummaryTool::m_useByteStreamFEI4
Gaudi::Property< bool > m_useByteStreamFEI4
Definition: PixelConditionsSummaryTool.h:101
PixelConditionsSummaryTool
Definition: PixelConditionsSummaryTool.h:49
PixelConditionsSummaryTool::initialize
virtual StatusCode initialize() override
Definition: PixelConditionsSummaryTool.cxx:22
PixelConditionsSummaryTool::ATLAS_THREAD_SAFE
SG::SlotSpecificObj< IDCCacheEntry > m_eventCache ATLAS_THREAD_SAFE
Definition: PixelConditionsSummaryTool.h:153
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
PixelConditionsSummaryTool::PixelConditionsSummaryTool
PixelConditionsSummaryTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: PixelConditionsSummaryTool.cxx:9
AthAlgTool.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
PixelID::eta_index
int eta_index(const Identifier &id) const
Definition: PixelID.h:645
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
PixelConditionsSummaryTool::m_pixelID
const PixelID * m_pixelID
Definition: PixelConditionsSummaryTool.h:91
PixelConditionsSummaryTool::m_activeState
std::vector< int > m_activeState
Definition: PixelConditionsSummaryTool.h:95
columnar::final
CM final
Definition: ColumnAccessor.h:106
ReadCondHandleKey.h
PixelDCSStatusData.h
Store pixel DCS module status in PixelDCSStatusData.
PixelConditionsSummaryTool::m_condTDAQKey
SG::ReadCondHandleKey< PixelTDAQData > m_condTDAQKey
Definition: PixelConditionsSummaryTool.h:116
PixelConditionsSummaryTool::activeFraction
virtual double activeFraction(const IdentifierHash &moduleHash, const Identifier &idStart, const Identifier &idEnd, const EventContext &ctx) const override final
Definition: PixelConditionsSummaryTool.cxx:266
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
IdentifierHash.h
PixelConditionsSummaryTool::m_pixelDetElStatusCondKey
SG::ReadCondHandleKey< InDet::SiDetectorElementStatus > m_pixelDetElStatusCondKey
Definition: PixelConditionsSummaryTool.h:130
IDetectorElementStatusTool.h
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
SiDetectorElementCollection.h
SG::ReadCondHandleKey< PixelDCSStateData >
PixelConditionsSummaryTool::goodFraction
virtual double goodFraction(const IdentifierHash &moduleHash, const Identifier &idStart, const Identifier &idEnd, const EventContext &ctx) const override final
Definition: PixelConditionsSummaryTool.cxx:557
IInDetConditionsTool
Definition: IInDetConditionsTool.h:26
h
InDetDD::PixelDiodeTree::DiodeProxy
Helper class to access parameters of a diode.
Definition: PixelDiodeTree.h:183
PixelConditionsSummaryTool::getContainer
const IDCInDetBSErrContainer * getContainer(const EventContext &ctx) const
Obtains container form the SG, if it is missing it will complain (hard-coded 3 times per job) and ret...
Definition: PixelConditionsSummaryTool.cxx:83
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
PixelModuleDesign.h
IDCInDetBSErrContainer.h
PixelConditionsSummaryTool::getDetectorElementStatus
virtual std::unique_ptr< InDet::SiDetectorElementStatus > getDetectorElementStatus(const EventContext &ctx, SG::WriteCondHandle< InDet::SiDetectorElementStatus > *whandle) const override
get the module and chip status of Si detector elements
Definition: PixelConditionsSummaryTool.cxx:359
PixelConditionsSummaryTool::m_condDeadMapKey
SG::ReadCondHandleKey< PixelDeadMapCondData > m_condDeadMapKey
Definition: PixelConditionsSummaryTool.h:119
PixelConditionsSummaryTool::createDetectorElementStatus
std::unique_ptr< InDet::SiDetectorElementStatus > createDetectorElementStatus(const EventContext &ctx, SG::WriteCondHandle< InDet::SiDetectorElementStatus > *whandle) const
Create a new detector element status element container.
Definition: PixelConditionsSummaryTool.cxx:330
PixelConditionsSummaryTool::getDetectorEelement
const InDetDD::SiDetectorElement * getDetectorEelement(const IdentifierHash &moduleHash, const EventContext &ctx) const
Definition: PixelConditionsSummaryTool.cxx:119
PixelConditionsSummaryTool::m_useByteStreamFEI3
Gaudi::Property< bool > m_useByteStreamFEI3
Definition: PixelConditionsSummaryTool.h:104
private
#define private
Definition: xAODTruthCnvAlg.h:20
SlotSpecificObj.h
Maintain a set of objects, one per slot.
PixelConditionsSummaryTool::m_pixelDetEleCollKey
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
Definition: PixelConditionsSummaryTool.h:125
InDetDD::PixelDiodeTree::makeCellIndex
static constexpr std::array< PixelDiodeTree::CellIndexType, 2 > makeCellIndex(T local_x_idx, T local_y_idx)
Create a 2D cell index from the indices in local-x (phi, row) and local-y (eta, column) direction.
Definition: PixelDiodeTree.h:320
PixelConditionsSummaryTool::m_useByteStreamRD53
Gaudi::Property< bool > m_useByteStreamRD53
Definition: PixelConditionsSummaryTool.h:107
PixelConditionsSummaryTool::m_missingErrorInfo
const uint64_t m_missingErrorInfo
Definition: PixelConditionsSummaryTool.h:135
AthAlgTool
Definition: AthAlgTool.h:26
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
InDetDD::SiDetectorElement::design
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
PixelID
Definition: PixelID.h:67
PixelConditionsSummaryTool::m_activeOnly
Gaudi::Property< bool > m_activeOnly
Definition: PixelConditionsSummaryTool.h:133
SG::WriteCondHandle
Definition: WriteCondHandle.h:26
PixelConditionsSummaryTool::ATLAS_THREAD_SAFE
SG::SlotSpecificObj< std::mutex > m_cacheMutex ATLAS_THREAD_SAFE
Definition: PixelConditionsSummaryTool.h:137
PixelConditionsSummaryTool::interfaceID
static InterfaceID & interfaceID()
Definition: PixelConditionsSummaryTool.h:176
PixelConditionsSummaryTool::m_activeStatus
std::vector< int > m_activeStatus
Definition: PixelConditionsSummaryTool.h:96
IInDetConditionsTool::IDCCacheEntry
Definition: IInDetConditionsTool.h:32
PixelConditionsSummaryTool::m_isActiveStatus
std::vector< std::string > m_isActiveStatus
Definition: PixelConditionsSummaryTool.h:93
Identifier
Definition: IdentifierFieldParser.cxx:14