ATLAS Offline Software
Loading...
Searching...
No Matches
MdtDriftCircleVariables.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
7namespace 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 }
20 bool MdtDriftCircleVariables::fill(const EventContext& ctx){
21 const ActsTrk::GeometryContext& 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::MdtDriftCircle* dc : m_dumpedPRDS){
30 dump(gctx, *dc);
31 }
33 for (const xAOD::MdtDriftCircle* dc : *inContainer) {
34 const MuonGMR4::MdtReadoutElement* re = dc->readoutElement();
35 const Identifier id{re->measurementId(dc->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, *dc);
42 }
43
44 m_filteredChamb.clear();
45 m_idOutIdxMap.clear();
46 m_dumpedPRDS.clear();
47 return true;
48 }
53 m_applyFilter = true;
54 m_filteredChamb.insert(idHelperSvc()->chamberId(chamberId));
55 }
57 m_applyFilter = true;
59 const Identifier id{re->measurementId(dc.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(&dc);
64 }
65 return insert_itr.first->second;
66 }
68 const xAOD::MdtDriftCircle& dc) {
70 const Identifier id{re->measurementId(dc.measurementHash())};
71
72
73 ATH_MSG_VERBOSE("Filling information for "<<idHelperSvc()->toString(id));
74
75
76 const Amg::Vector3D tubePos{re->center(gctx, dc.measurementHash())};
77 m_id.push_back(id);
78 m_globPos.push_back(tubePos);
79 m_driftRadius.push_back(dc.driftRadius());
81 m_tdcCounts.push_back(dc.tdc());
82 m_adcCounts.push_back(dc.adc());
83 }
84
85}
const boost::regex re(r_e)
#define ATH_MSG_FATAL(x)
#define ATH_MSG_VERBOSE(x)
Handle class for reading from StoreGate.
bool msgLvl(const MSG::Level lvl) const
Test the output level.
ThreeVectorBranch m_globPos
Position of the Mdt drift circle in the global frame.
std::vector< const xAOD::MdtDriftCircle * > m_dumpedPRDS
Vector of PRDs parsed via the external mechanism. These measurements are parsed first.
bool m_applyFilter
Apply a filter to dump the prds.
void dump(const ActsTrk::GeometryContext &gctx, const xAOD::MdtDriftCircle &dc)
VectorBranch< float > & m_driftRadius
Dirft radius of the associated drit circle.
VectorBranch< float > & m_driftRadiusUncert
Uncertainty on the drift radius measurement.
void enableSeededDump()
Activates the seeded dump of the branch.
void dumpAllHitsInChamber(const Identifier &chamberId)
All hits from this particular chamber identifier are dumped to the output including the ones from the...
VectorBranch< uint16_t > & m_adcCounts
Adc counts of the measurement.
MdtIdentifierBranch m_id
Identifier of the Mdt.
unsigned int push_back(const xAOD::MdtDriftCircle &dc)
Push back the drift circle measurement to the output.
VectorBranch< uint16_t > & m_tdcCounts
tdc counts of the measurement
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...
std::unordered_set< Identifier > m_filteredChamb
Set of chambers to be dumped.
std::unordered_map< Identifier, unsigned int > m_idOutIdxMap
Map of Identifiers to the position index inside the vector.
SG::ReadHandleKey< xAOD::MdtDriftCircleContainer > m_key
MdtDriftCircleVariables(MuonTesterTree &tree, const std::string &inContainer, MSG::Level msgLvl=MSG::Level::INFO, const std::string &collName="MdtPrd")
const Muon::IMuonIdHelperSvc * idHelperSvc() const
TesterModuleBase(MuonTesterTree &tree, const std::string &grp_name, MSG::Level msglvl=MSG::Level::INFO)
const ActsTrk::GeometryContext & getGeoCtx(const EventContext &ctx) const
bool declare_dependency(Key &key)
Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
TTree * tree() override final
Returns the underlying TTree object.
bool isPresent() const
Is the referenced object present in SG?
float driftRadiusUncert() const
Returns the uncertainty on the drift radius.
const MuonGMR4::MdtReadoutElement * readoutElement() const
Retrieve the associated MdtReadoutElement.
float driftRadius() const
Returns the drift radius.
IdentifierHash measurementHash() const
Returns the hash of the measurement channel (tube (x) layer)
int16_t adc() const
Returns the ADC (typically range is 0 to 250)
int16_t tdc() const
Returns the TDC (typically range is 0 to 2500)
Eigen::Matrix< double, 3, 1 > Vector3D
std::string toString(const Parameters &pars)
Dumps the parameters into a string with labels in front of each number.
Lightweight algorithm to read xAOD MDT sim hits and (fast-digitised) drift circles from SG and fill a...
-event-from-file
MdtDriftCircle_v1 MdtDriftCircle