ATLAS Offline Software
TgcStripVariables.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "StoreGate/ReadHandle.h"
7 namespace MuonValR4{
8 
10  const std::string& inContainer,
11  MSG::Level msgLvl,
12  const std::string& collName):
13  TesterModuleBase{tree, inContainer + collName, msgLvl},
14  m_key{inContainer},
15  m_collName{collName}{
16  }
18  return declare_dependency(m_key);
19  }
20  bool TgcStripVariables::fill(const EventContext& ctx){
21  const ActsGeometryContext& gctx{getGeoCtx(ctx)};
22 
23  SG::ReadHandle inContainer{m_key, ctx};
24  if (!inContainer.isPresent()) {
25  ATH_MSG_FATAL("Failed to retrieve "<<m_key.fullKey());
26  return false;
27  }
29  for (const xAOD::TgcStrip* strip : m_dumpedPRDS){
30  dump(gctx, *strip);
31  }
33  for (const xAOD::TgcStrip* strip : *inContainer) {
34  const MuonGMR4::TgcReadoutElement* re = strip->readoutElement();
35  const Identifier id{re->measurementId(strip->measurementHash())};
36  if ((m_applyFilter && !m_filteredChamb.count(idHelperSvc()->chamberId(id))) ||
37  m_idOutIdxMap.find(id) != m_idOutIdxMap.end()){
38  ATH_MSG_VERBOSE("Skip "<<idHelperSvc()->toString(id));
39  continue;
40  }
41  dump(gctx, *strip);
42  }
43 
44  m_filteredChamb.clear();
45  m_idOutIdxMap.clear();
46  m_dumpedPRDS.clear();
47  return true;
48  }
50  m_applyFilter = true;
51  }
53  m_applyFilter = true;
54  m_filteredChamb.insert(idHelperSvc()->chamberId(chamberId));
55  }
56  unsigned int TgcStripVariables::push_back(const xAOD::TgcStrip& strip){
57  m_applyFilter = true;
58  const MuonGMR4::TgcReadoutElement* re = strip.readoutElement();
59  const Identifier id{re->measurementId(strip.measurementHash())};
60 
61  const auto insert_itr = m_idOutIdxMap.insert(std::make_pair(id, m_idOutIdxMap.size()));
62  if (insert_itr.second) {
63  m_dumpedPRDS.push_back(&strip);
64  }
65  return insert_itr.first->second;
66  }
68  const xAOD::TgcStrip& strip) {
69  const MuonGMR4::TgcReadoutElement* re = strip.readoutElement();
70  const Identifier id{strip.identify()};
71 
72 
73  ATH_MSG_VERBOSE("Filling information for "<<idHelperSvc()->toString(id));
74 
75  m_id.push_back(id);
77  locPos = strip.localPosition<1>()[0] * Amg::Vector3D::UnitX();
78 
79  const Amg::Vector3D globPos{re->localToGlobalTrans(gctx, strip.layerHash()) *locPos};
80  m_globPos.push_back(globPos);
81  m_locPos.push_back(strip.localPosition<1>()[0]);
82  m_locCov.push_back(strip.localCovariance<1>()(0,0));
83 
84  }
85 
86 }
TgcStripVariables.h
MuonValR4::TgcStripVariables::m_filteredChamb
std::unordered_set< Identifier > m_filteredChamb
Set of chambers to be dumped.
Definition: TgcStripVariables.h:62
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonValR4::TgcStripVariables::m_globPos
ThreeVectorBranch m_globPos
Position of the Mdt drift circle in the global frame.
Definition: TgcStripVariables.h:55
MuonValR4::TgcStripVariables::m_applyFilter
bool m_applyFilter
Apply a filter to dump the prds.
Definition: TgcStripVariables.h:68
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::TgcStrip_v1
Definition: TgcStrip_v1.h:19
MuonValR4::TgcStripVariables::m_dumpedPRDS
std::vector< const xAOD::TgcStrip * > m_dumpedPRDS
Vector of PRDs parsed via the external mechanism. These measurements are parsed first.
Definition: TgcStripVariables.h:66
tree
TChain * tree
Definition: tile_monitor.h:30
MuonValR4::TgcStripVariables::TgcStripVariables
TgcStripVariables(MuonTesterTree &tree, const std::string &inContainer, MSG::Level msgLvl=MSG::Level::INFO, const std::string &collName="TgcPrd")
Definition: TgcStripVariables.cxx:9
MuonValR4::TgcStripVariables::push_back
unsigned int push_back(const xAOD::TgcStrip &strip)
Push back the drift circle measurement to the output.
Definition: TgcStripVariables.cxx:56
MuonValR4::TgcStripVariables::declare_keys
bool declare_keys() override final
Definition: TgcStripVariables.cxx:17
MuonValR4::TgcStripVariables::m_id
TgcIdentifierBranch m_id
Identifier of the Mdt.
Definition: TgcStripVariables.h:53
MuonValR4::TgcStripVariables::dumpAllHitsInChamber
void dumpAllHitsInChamber(const Identifier &chamberId)
All hits from this particular chamber identifier are dumped to the output including the ones from the...
Definition: TgcStripVariables.cxx:52
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonValR4::TgcStripVariables::enableSeededDump
void enableSeededDump()
Activates the seeded dump of the branch.
Definition: TgcStripVariables.cxx:49
MuonVal::MuonTesterBranch::tree
TTree * tree() override final
Returns the underlying TTree object.
Definition: MuonTesterBranch.cxx:53
MuonVal::MuonTesterBranch::declare_dependency
bool declare_dependency(Key &key)
Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
MuonValR4::TesterModuleBase::getGeoCtx
const ActsGeometryContext & getGeoCtx(const EventContext &ctx) const
Definition: TesterModuleBase.cxx:22
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonVal::TgcIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:66
MuonValR4::TgcStripVariables::m_locCov
VectorBranch< float > & m_locCov
local covariance of the measurement
Definition: TgcStripVariables.h:59
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
MuonValR4::TgcStripVariables::m_key
SG::ReadHandleKey< xAOD::TgcStripContainer > m_key
Definition: TgcStripVariables.h:49
AthMessaging::msgLvl
bool msgLvl(const MSG::Level lvl) const
Test the output level.
Definition: AthMessaging.h:151
MuonVal::MuonTesterTree
Definition: MuonTesterTree.h:30
MuonValR4::TgcStripVariables::m_locPos
VectorBranch< float > & m_locPos
Local strip position of the measurement
Definition: TgcStripVariables.h:57
MuonValR4::TgcStripVariables::fill
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...
Definition: TgcStripVariables.cxx:20
MuonValR4::TesterModuleBase::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: TesterModuleBase.cxx:18
MuonValR4::TgcStripVariables::dump
void dump(const ActsGeometryContext &gctx, const xAOD::TgcStrip &dc)
Definition: TgcStripVariables.cxx:67
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonValR4::TesterModuleBase
Definition: TesterModuleBase.h:15
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonValR4
Lightweight algorithm to read xAOD MDT sim hits and (fast-digitised) drift circles from SG and fill a...
Definition: IPatternVisualizationTool.h:23
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonValR4::TgcStripVariables::m_idOutIdxMap
std::unordered_map< Identifier, unsigned int > m_idOutIdxMap
Map of Identifiers to the position index inside the vector.
Definition: TgcStripVariables.h:64
re
const boost::regex re(r_e)
ReadHandle.h
Handle class for reading from StoreGate.
MuonGMR4::TgcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/TgcReadoutElement.h:19
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Identifier
Definition: IdentifierFieldParser.cxx:14