Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
#include <StripClusteringTool.h>
|
bool | passTiming (const std::bitset< 3 > &timePattern) const |
|
StatusCode | decodeTimeBins () |
|
std::optional< std::pair< std::vector< Cell >, bool > > | unpackRDOs (const InDetRawDataCollection< StripRDORawData > &RDOs, const StripID &idHelper, const InDet::SiDetectorElementStatus *sctDetElStatus, const EventContext &ctx) const |
|
bool | isBadStrip (const EventContext &ctx, const InDet::SiDetectorElementStatus *sctDetElStatus, const StripID &idHelper, IdentifierHash waferHash, Identifier stripId) const |
|
StatusCode | makeCluster (const StripClusteringTool::Cluster &cluster, double LorentzShift, Eigen::Matrix< float, 1, 1 > &localCov, const StripID &stripID, const InDetDD::SiDetectorElement *element, const InDetDD::SiDetectorDesign &design, xAOD::StripCluster &container) const |
|
const InDet::SiDetectorElementStatus * | getStripDetElStatus (const EventContext &ctx) const |
|
Definition at line 26 of file StripClusteringTool.h.
◆ CellCollection
◆ ClusterCollection
◆ StripID
◆ StripRDORawData
◆ StripClusteringTool()
ActsTrk::StripClusteringTool::StripClusteringTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
◆ clusterize()
Definition at line 103 of file StripClusteringTool.cxx.
112 bool goodModule =
true;
114 if (stripDetElStatus !=
nullptr) {
115 goodModule = stripDetElStatus->
isGood(idHash);
127 return StatusCode::SUCCESS;
133 unsigned int nFiredStrips = 0
u;
135 nFiredStrips += rdo->getGroupSize();
138 return StatusCode::SUCCESS;
142 ATH_CHECK( stripDetEleHandle.isValid() );
144 if (stripDetEle ==
nullptr) {
146 return StatusCode::FAILURE;
150 stripDetEle->getDetectorElement(idHash);
157 Eigen::Matrix<float,1,1> localCov(pitch * pitch *
ONE_TWELFTH);
160 std::optional<std::pair<CellCollection,bool>> unpckd
161 =
unpackRDOs(RDOs, stripID, stripDetElStatus, ctx);
162 if (not unpckd.has_value()) {
163 ATH_MSG_FATAL(
"Error encountered while unpacking strip RDOs!");
164 return StatusCode::FAILURE;
167 auto& [
cells, badStripOnModule] = *unpckd;
170 Acts::Ccl::createClusters<CellCollection, ClusterCollection, 1>(
cells);
173 std::size_t previousSizeContainer = container.
size();
175 std::vector<xAOD::StripCluster*> toAddCollection;
176 toAddCollection.reserve(
clusters.size());
179 container.
insert(container.
end(), toAddCollection.begin(), toAddCollection.end());
200 *container[previousSizeContainer+
i]));
202 ATH_MSG_FATAL(
"Exception thrown while creating xAOD::StripCluster:"
208 return StatusCode::FAILURE;
212 return StatusCode::SUCCESS;
◆ decodeTimeBins()
StatusCode ActsTrk::StripClusteringTool::decodeTimeBins |
( |
| ) |
|
|
private |
◆ getStripDetElStatus()
◆ initialize()
StatusCode ActsTrk::StripClusteringTool::initialize |
( |
| ) |
|
|
overridevirtual |
◆ isBadStrip()
Definition at line 289 of file StripClusteringTool.cxx.
295 if (stripDetElStatus) {
296 const int strip_i{stripID.strip(stripId)};
299 stripDetElStatus->isCellGood(waferHash.
value(), strip_i),
301 return not stripDetElStatus->isCellGood(waferHash.
value(), strip_i) ;
◆ makeCluster()
Definition at line 253 of file StripClusteringTool.cxx.
261 auto [localPos, globalPos]
262 = computePosition(cluster, lorentzShift, stripID, element, design);
268 cl.setMeasurement<1>(element->
identifyHash(), localPos, localCov);
269 cl.setIdentifier(
cluster.ids.front().get_compact() );
270 cl.globalPosition() = globalPos;
274 return StatusCode::SUCCESS;
◆ passTiming()
bool ActsTrk::StripClusteringTool::passTiming |
( |
const std::bitset< 3 > & |
timePattern | ) |
const |
|
private |
◆ unpackRDOs()
Definition at line 308 of file StripClusteringTool.cxx.
316 bool badStripOnModule{
false};
325 std::bitset<3> timePattern(raw3->
getTimeBin());
332 Identifier waferId = stripID.wafer_id(firstStripId);
334 size_t iFirstStrip =
static_cast<size_t>(stripID.strip(firstStripId));
336 iFirstStrip + raw->getGroupSize(),
337 static_cast<size_t>(stripID.strip_max(waferId)) + 1
340 for (
size_t i = iFirstStrip;
i < iMaxStrip;
i++) {
341 Identifier stripIdent = stripID.strip_id(waferId,
i);
342 if (
isBadStrip(ctx, stripDetElStatus, stripID, waferHash, stripIdent)) {
345 <<
", wafer is: " << waferId);
346 badStripOnModule =
true;
349 cells.emplace_back(
i, stripIdent, std::move(timePattern));
353 return std::make_pair(std::move(
cells), badStripOnModule);
◆ m_checkBadModules
Gaudi::Property<bool> ActsTrk::StripClusteringTool::m_checkBadModules |
|
private |
Initial value:{this, "checkBadModules", true,
"Check bad modules using the conditions summary tool"}
Definition at line 104 of file StripClusteringTool.h.
◆ m_conditionsTool
Initial value:{this, "conditionsTool", "",
"Conditions summary tool"}
Definition at line 101 of file StripClusteringTool.h.
◆ m_lorentzAngleTool
Initial value:{this, "LorentzAngleTool", "",
"Tool to retreive Lorentz angle of Si detector module"
}
Definition at line 93 of file StripClusteringTool.h.
◆ m_maxFiredStrips
Gaudi::Property<unsigned int> ActsTrk::StripClusteringTool::m_maxFiredStrips |
|
private |
Initial value:{
this,
"maxFiredStrips", 384
u,
"Threshold of number of fired strips per wafer. 0 disables the per-wafer cut."}
Definition at line 107 of file StripClusteringTool.h.
◆ m_stripDetEleCollKey
Initial value:{this, "StripDetEleCollKey", "ITkStripDetectorElementCollection",
"SiDetectorElementCollection key for strip"}
Definition at line 110 of file StripClusteringTool.h.
◆ m_stripDetElStatus
Initial value:{this, "StripDetElStatus", "",
"SiDetectorElementStatus for strip"}
Definition at line 98 of file StripClusteringTool.h.
◆ m_timeBinBits
int ActsTrk::StripClusteringTool::m_timeBinBits[3] {-1, -1, -1} |
|
private |
◆ m_timeBinStr
StringProperty ActsTrk::StripClusteringTool::m_timeBinStr {this, "timeBins", ""} |
|
private |
The documentation for this class was generated from the following files:
unsigned int value() const
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
@ u
Enums for curvilinear frames.
virtual IdentifierHash identifyHash() const override final
identifier hash (inline)
virtual IdentifierHash identifyHash() const override final
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
#define VALIDATE_STATUS_ARRAY(use_info, info_val, summary_val)
iterator insert(iterator position, value_type pElem)
Add a new element to the collection.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
bool isGood(IdentifierHash hash) const
StatusCode initialize(bool used=true)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
#define ATH_MSG_WARNING(x)
constexpr double ONE_TWELFTH
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
virtual const SiDetectorDesign & design() const override final
access to the local description (inline):
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
size_type size() const noexcept
Returns the number of elements in the collection.
virtual double phiPitch() const =0
Pitch in phi direction.
virtual Identifier identify() const override final
identifier of this detector element (inline)