ATLAS Offline Software
RpcMeasurementVariables.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 RpcMeasurementVariables::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::RpcMeasurement* strip : m_dumpedPRDS){
30  dump(gctx, *strip);
31  }
33  for (const xAOD::RpcMeasurement* strip : *inContainer) {
34  const MuonGMR4::RpcReadoutElement* 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  }
57  m_applyFilter = true;
58  const MuonGMR4::RpcReadoutElement* 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::RpcMeasurement& strip) {
69  const MuonGMR4::RpcReadoutElement* re = strip.readoutElement();
70  const Identifier id{re->measurementId(strip.measurementHash())};
71 
72 
73  ATH_MSG_VERBOSE("Filling information for "<<idHelperSvc()->toString(id));
74 
75 
76  m_id.push_back(id);
77  Amg::Vector3D locPos{strip.localMeasurementPos()};
78  AmgSymMatrix(2) locCov{AmgSymMatrix(2)::Identity()};
79  if (strip.numDimensions() == 1) {
80  locCov(0,0) = strip.localCovariance<1>()(0,0);
81  } else {
82  locCov = xAOD::toEigen(strip.localCovariance<2>());
83  }
84  const Amg::Vector3D globPos{re->localToGlobalTrans(gctx, strip.layerHash()) *locPos};
85  m_globPos.push_back(globPos);
86  m_locPos.push_back(locPos.block<2,1>(0,0));
87  m_locCov.push_back(locCov(0,0), locCov(1,1));
88  m_time.push_back(strip.time());
89  m_toT.push_back(strip.timeOverThreshold());
90 
91  }
92 
93 }
MuonValR4::RpcMeasurementVariables::m_filteredChamb
std::unordered_set< Identifier > m_filteredChamb
Set of chambers to be dumped.
Definition: RpcMeasurementVariables.h:67
xAOD::RpcMeasurement_v1
RpcMeasurement_v1: Class storing the geneic.
Definition: RpcMeasurement_v1.h:21
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonValR4::RpcMeasurementVariables::m_applyFilter
bool m_applyFilter
Apply a filter to dump the prds.
Definition: RpcMeasurementVariables.h:73
MuonValR4::RpcMeasurementVariables::m_locPos
TwoVectorBranch m_locPos
Local strip position of the measurement
Definition: RpcMeasurementVariables.h:57
MuonValR4::RpcMeasurementVariables::m_key
SG::ReadHandleKey< xAOD::RpcMeasurementContainer > m_key
Definition: RpcMeasurementVariables.h:49
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
tree
TChain * tree
Definition: tile_monitor.h:30
MuonVal::RpcIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:36
MuonValR4::RpcMeasurementVariables::RpcMeasurementVariables
RpcMeasurementVariables(MuonTesterTree &tree, const std::string &inContainer, MSG::Level msgLvl=MSG::Level::INFO, const std::string &collName="RpcPrd")
Definition: RpcMeasurementVariables.cxx:9
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
MuonValR4::RpcMeasurementVariables::declare_keys
bool declare_keys() override final
Definition: RpcMeasurementVariables.cxx:17
MuonGMR4::RpcReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/RpcReadoutElement.h:17
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:50
MuonVal::MuonTesterBranch::tree
TTree * tree() override final
Returns the underlying TTree object.
Definition: MuonTesterBranch.cxx:53
MuonValR4::RpcMeasurementVariables::m_globPos
ThreeVectorBranch m_globPos
Position of the Mdt drift circle in the global frame.
Definition: RpcMeasurementVariables.h:55
MuonValR4::RpcMeasurementVariables::m_time
VectorBranch< float > & m_time
Time of the measurement.
Definition: RpcMeasurementVariables.h:61
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
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
AthMessaging::msgLvl
bool msgLvl(const MSG::Level lvl) const
Test the output level.
Definition: AthMessaging.h:151
MuonVal::MuonTesterTree
Definition: MuonTesterTree.h:30
MuonVal::TwoVectorBranch::push_back
void push_back(const Amg::Vector2D &vec)
interface using the Amg::Vector3D
Definition: TwoVectorBranch.cxx:21
MuonValR4::RpcMeasurementVariables::enableSeededDump
void enableSeededDump()
Activates the seeded dump of the branch.
Definition: RpcMeasurementVariables.cxx:49
MuonValR4::TesterModuleBase::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: TesterModuleBase.cxx:18
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonValR4::RpcMeasurementVariables::m_id
RpcIdentifierBranch m_id
Identifier of the Mdt.
Definition: RpcMeasurementVariables.h:53
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
MuonValR4::RpcMeasurementVariables::dump
void dump(const ActsGeometryContext &gctx, const xAOD::RpcMeasurement &dc)
Definition: RpcMeasurementVariables.cxx:67
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonValR4::RpcMeasurementVariables::m_idOutIdxMap
std::unordered_map< Identifier, unsigned int > m_idOutIdxMap
Map of Identifiers to the position index inside the vector.
Definition: RpcMeasurementVariables.h:69
re
const boost::regex re(r_e)
RpcMeasurementVariables.h
MuonValR4::RpcMeasurementVariables::m_toT
VectorBranch< float > & m_toT
Time over threshold.
Definition: RpcMeasurementVariables.h:63
ReadHandle.h
Handle class for reading from StoreGate.
MuonValR4::RpcMeasurementVariables::m_dumpedPRDS
std::vector< const xAOD::RpcMeasurement * > m_dumpedPRDS
Vector of PRDs parsed via the external mechanism. These measurements are parsed first.
Definition: RpcMeasurementVariables.h:71
MuonValR4::RpcMeasurementVariables::dumpAllHitsInChamber
void dumpAllHitsInChamber(const Identifier &chamberId)
All hits from this particular chamber identifier are dumped to the output including the ones from the...
Definition: RpcMeasurementVariables.cxx:52
MuonValR4::RpcMeasurementVariables::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: RpcMeasurementVariables.cxx:20
MuonValR4::RpcMeasurementVariables::m_locCov
TwoVectorBranch m_locCov
local covariance of the measurement
Definition: RpcMeasurementVariables.h:59
MuonValR4::RpcMeasurementVariables::push_back
unsigned int push_back(const xAOD::RpcMeasurement &measurement)
Push back the drift circle measurement to the output.
Definition: RpcMeasurementVariables.cxx:56
Identifier
Definition: IdentifierFieldParser.cxx:14