ATLAS Offline Software
Loading...
Searching...
No Matches
TGCDigitVariables.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6
8namespace MuonPRDTest {
9 TgcDigitVariables::TgcDigitVariables(MuonTesterTree& tree, const std::string& container_name, MSG::Level msglvl) :
10 PrdTesterModule(tree, "Digits_TGC", msglvl), m_key{container_name} {}
11
12 bool TgcDigitVariables::fill(const EventContext& ctx) {
13 ATH_MSG_DEBUG("do fillTGCSimHitVariables()");
14 const MuonGM::MuonDetectorManager* MuonDetMgr = getDetMgr(ctx);
15 if (!MuonDetMgr) { return false; }
17 if (!TgcDigitContainer.isValid()) {
18 ATH_MSG_FATAL("Failed to retrieve digit container " << m_key.fullKey());
19 return false;
20 }
21
22 ATH_MSG_DEBUG("retrieved TGC Digit Container with size " << TgcDigitContainer->digit_size());
23
24 if (TgcDigitContainer->size() == 0) ATH_MSG_DEBUG(" TGC Digit Container empty ");
25 unsigned int n_digits{0};
26 for (const TgcDigitCollection* coll : *TgcDigitContainer) {
27 ATH_MSG_DEBUG("processing collection with size " << coll->size());
28 for (const TgcDigit* digit : *coll) {
29 Identifier Id = digit->identify();
30 ATH_MSG_DEBUG("TGC Digit Offline id: " << idHelperSvc()->toString(Id));
31
32 const MuonGM::TgcReadoutElement* rdoEl = MuonDetMgr->getTgcReadoutElement(Id);
33 if (!rdoEl) {
34 ATH_MSG_ERROR("TGCDigitVariables::fillVariables() - Failed to retrieve TGCReadoutElement for "<<idHelperSvc()->tgcIdHelper().print_to_string(Id).c_str());
35 return false;
36 }
37
38 Amg::Vector3D gpos{Amg::Vector3D::Zero()};
39 Amg::Vector2D lpos{Amg::Vector2D::Zero()};
40
41 if (!rdoEl->stripPosition(Id, lpos)) {
42 continue;
43 }
44 rdoEl->surface(Id).localToGlobal(lpos, gpos, gpos);
45 m_TGC_dig_globalPos.push_back(gpos);
46 m_TGC_dig_localPos.push_back(lpos);
47 m_TGC_dig_bcId.push_back(digit->bcTag());
48 m_TGC_dig_id.push_back(Id);
49 ++n_digits;
50 }
51 }
52 m_TGC_nDigits = n_digits;
53 ATH_MSG_DEBUG(" finished fillTgcDigitVariables()");
54 return true;
55 }
57}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_DEBUG(x)
size_t size() const
Duplicate of fullSize for backwards compatability.
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
A TgcReadoutElement corresponds to a single TGC chamber; therefore typically a TGC station contains s...
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override
strip position If the strip number is outside the range of valid strips, the function will return fal...
const MuonGM::MuonDetectorManager * getDetMgr(const EventContext &ctx) const
const Muon::IMuonIdHelperSvc * idHelperSvc() const
PrdTesterModule(MuonTesterTree &tree, const std::string &grp_name, MSG::Level msglvl)
TgcDigitVariables(MuonTesterTree &tree, const std::string &container_name, MSG::Level msglvl)
ScalarBranch< unsigned int > & m_TGC_nDigits
VectorBranch< uint8_t > & m_TGC_dig_bcId
bool fill(const EventContext &ctx) override final
The fill method checks if enough information is provided such that the branch is cleared from the inf...
SG::ReadHandleKey< TgcDigitContainer > m_key
bool declare_dependency(Key &key)
Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
TTree * tree() override final
Returns the underlying TTree object.
Use IdentifiableContainer with TgcDigitCollection.
size_type digit_size() const
virtual void localToGlobal(const Amg::Vector2D &locp, const Amg::Vector3D &mom, Amg::Vector3D &glob) const override final
Specified for PlaneSurface: LocalToGlobal method without dynamic memory allocation.
Eigen::Matrix< double, 2, 1 > Vector2D
Eigen::Matrix< double, 3, 1 > Vector3D