Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
MMRDOVariables.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 
8 
9 using namespace Muon;
10 namespace MuonPRDTest {
11  MMRDOVariables::MMRDOVariables(MuonTesterTree& tree, const std::string& container_name, MSG::Level msglvl) :
12  PrdTesterModule(tree, "RDO_MM", msglvl), m_rdokey{container_name} {}
14 
15  bool MMRDOVariables::fill(const EventContext& ctx) {
16  m_externalPush = false;
17  ATH_MSG_DEBUG("do fillMMRDOVariables()");
18  SG::ReadHandle<MM_RawDataContainer> mmrdoContainer{m_rdokey, ctx};
19  if (!mmrdoContainer.isValid()) {
20  ATH_MSG_FATAL("Failed to retrieve MM rdo container " << m_rdokey.fullKey());
21  return false;
22  }
23  ATH_MSG_DEBUG("retrieved MM rdo Container with size " << mmrdoContainer->size());
24 
25  if (mmrdoContainer->size() == 0) ATH_MSG_DEBUG(" MM rdo Container empty ");
26  for (const MM_RawDataCollection* coll : *mmrdoContainer) {
27  if(m_applyFilter && !m_filteredChamb.count(coll->identifierHash())){
28  continue;
29  }
30 
31 
32  for (const MM_RawData* rdo : *coll) {
33  dump(ctx, *rdo);
34  }
35  }
37  ATH_MSG_DEBUG(" finished fillMMRDOVariables()");
38  return true;
39  }
40 
41  unsigned int MMRDOVariables::push_back(const EventContext& ctx, const Muon::MM_RawData& rdo) {
42  m_externalPush = true;
43  return dump(ctx, rdo);
44  }
45 
47 
49  m_applyFilter = true;
50  m_filteredChamb.insert(idHelperSvc()->moduleHash(detEle.identify()));
51  }
52 
53 
54  unsigned int MMRDOVariables::push_back(const EventContext& ctx, const Identifier& id) {
55  SG::ReadHandle<MM_RawDataContainer> mmrdoContainer{m_rdokey, ctx};
56  if (!mmrdoContainer.isValid()) {
57  ATH_MSG_FATAL("Failed to retrieve MM rdo container " << m_rdokey.fullKey());
58  return -1;
59  }
60  ATH_MSG_DEBUG("retrieved MM rdo Container with size " << mmrdoContainer->size());
61  const MM_RawDataCollection* coll = mmrdoContainer->indexFindPtr(idHelperSvc()->moduleHash(id));
62  for (const MM_RawData* rdo : *coll) {
63  if (rdo->identify()== id) {
64  return push_back(ctx, *rdo);
65  }
66  }
67  ATH_MSG_ERROR("The requested RDO " << idHelperSvc()->toString(id) << " was not found in the container");
68  return -1;
69  }
70 
71 
72  unsigned int MMRDOVariables::dump(const EventContext& ctx,const Muon::MM_RawData& rdo) {
73  const Identifier Id = rdo.identify();
74 
75  if (m_filteredRDOs.count(Id)) {
76  ATH_MSG_VERBOSE("The hit has already been added " << idHelperSvc()->toString(Id));
77  return m_filteredRDOs.at(Id);
78  }
79 
80  const MuonGM::MuonDetectorManager* MuonDetMgr = getDetMgr(ctx);
81  if (!MuonDetMgr) {
82  ATH_MSG_ERROR("MuonDetMgr not found");
83  return -1;
84  }
85 
86  const MuonGM::MMReadoutElement* rdoEl = MuonDetMgr->getMMReadoutElement(Id);
87  if (!rdoEl) {
88  ATH_MSG_ERROR("The micromega hit "<<idHelperSvc()->toString(Id)<<" does not have a detector element attached. That should actually never happen");
89  return -1;
90  }
91  Amg::Vector2D localStripPos{Amg::Vector2D::Zero()};
92  if ( !rdoEl->stripPosition(Id,localStripPos) ) {
93  ATH_MSG_WARNING("The MM hit "<<idHelperSvc()->toString(Id)<<" does not have a valid strip position.");
94  return -1;
95 
96  }
97 
101 
102 
104  m_NSWMM_rdo_localPosX.push_back(localStripPos.x());
105  m_NSWMM_rdo_localPosY.push_back(localStripPos.y());
106 
107  Amg::Vector3D globalStripPos(0., 0., 0.);
108  rdoEl->surface(Id).localToGlobal(localStripPos,Amg::Vector3D(0.,0.,0.),globalStripPos);
109  m_NSWMM_rdo_globalPos.push_back(globalStripPos);
110 
111  unsigned idx = m_filteredRDOs.size();
112  if (m_externalPush) {
113  m_filteredRDOs.insert(std::make_pair(Id, idx));
114  }
115  return idx;
116  }
117 }
MuonGM::MMReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position – local or global If the strip number is outside the range of valid strips,...
Definition: MMReadoutElement.h:206
MuonPRDTest::MMRDOVariables::enableSeededDump
void enableSeededDump()
Dumps only hits which are marked by the dumpAllHitsInChamber method.
Definition: MMRDOVariables.cxx:46
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Muon::MM_RawData::relBcid
uint16_t relBcid() const
Definition: MM_RawData.h:63
MuonPRDTest::MMRDOVariables::dumpAllHitsInChamber
void dumpAllHitsInChamber(const MuonGM::MMReadoutElement &detEle)
Adds all hits in this particular chamber to the output n-tuple.
Definition: MMRDOVariables.cxx:48
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
Muon::MM_RawData::identify
const Identifier & identify() const
Definition: MM_RawData.h:58
tree
TChain * tree
Definition: tile_monitor.h:30
Muon::MM_RawData::time
int time() const
Definition: MM_RawData.h:62
MuonPRDTest::PrdTesterModule::getDetMgr
const MuonGM::MuonDetectorManager * getDetMgr(const EventContext &ctx) const
Definition: PrdTesterModule.cxx:16
MuonVal::MmIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:93
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
MuonPRDTest::MMRDOVariables::m_filteredRDOs
std::unordered_map< Identifier, unsigned int > m_filteredRDOs
Set of particular chambers to be dumped.
Definition: MMRDOVariables.h:49
MuonGM::MuonClusterReadoutElement::surface
virtual const Trk::PlaneSurface & surface() const override
access to chamber surface (phi orientation), uses the first gas gap
Definition: MuonClusterReadoutElement.h:123
Muon::MM_RawDataCollection
Definition: MM_RawDataCollection.h:15
MuonPRDTest::MMRDOVariables::m_NSWMM_rdo_charge
VectorBranch< int > & m_NSWMM_rdo_charge
Definition: MMRDOVariables.h:39
MuonVal::MuonTesterBranch::declare_dependency
bool declare_dependency(Key &key)
Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MMReadoutElement.h
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
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MuonVal::MuonTesterTree
Definition: MuonTesterTree.h:30
MuonPRDTest::MMRDOVariables::m_NSWMM_rdo_localPosY
VectorBranch< double > & m_NSWMM_rdo_localPosY
Definition: MMRDOVariables.h:42
MuonPRDTest::MMRDOVariables::m_NSWMM_rdo_localPosX
VectorBranch< double > & m_NSWMM_rdo_localPosX
Definition: MMRDOVariables.h:41
Muon::MM_RawData
Temporary class to hold the MM RDO.
Definition: MM_RawData.h:20
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonPRDTest::MMRDOVariables::m_rdokey
SG::ReadHandleKey< Muon::MM_RawDataContainer > m_rdokey
Definition: MMRDOVariables.h:36
MuonPRDTest::MMRDOVariables::push_back
unsigned int push_back(const EventContext &ctx, const Muon::MM_RawData &rdo)
Adds a RDO to the output tree.
Definition: MMRDOVariables.cxx:41
MuonPRDTest::PrdTesterModule
Definition: PrdTesterModule.h:15
MMRDOVariables.h
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonPRDTest::MMRDOVariables::m_NSWMM_rdo_globalPos
ThreeVectorBranch m_NSWMM_rdo_globalPos
Definition: MMRDOVariables.h:43
Muon::MM_RawData::charge
int charge() const
Definition: MM_RawData.h:64
MuonPRDTest::MMRDOVariables::m_filteredChamb
std::unordered_set< IdentifierHash > m_filteredChamb
Set of chambers to be dumped.
Definition: MMRDOVariables.h:47
MuonPRDTest::MMRDOVariables::m_NSWMM_rdo_relBcid
VectorBranch< uint16_t > & m_NSWMM_rdo_relBcid
Definition: MMRDOVariables.h:40
MuonPRDTest::MMRDOVariables::declare_keys
bool declare_keys() override final
Definition: MMRDOVariables.cxx:13
MuonPRDTest::MMRDOVariables::m_NSWMM_rdo_id
MmIdentifierBranch m_NSWMM_rdo_id
Definition: MMRDOVariables.h:44
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonPRDTest::MMRDOVariables::m_applyFilter
bool m_applyFilter
Apply a filter to dump the prds.
Definition: MMRDOVariables.h:51
MuonPRDTest::MMRDOVariables::m_NSWMM_rdo_time
VectorBranch< int > & m_NSWMM_rdo_time
Definition: MMRDOVariables.h:38
MuonPRDTest::MMRDOVariables::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: MMRDOVariables.cxx:15
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:51
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonGM::MuonDetectorManager::getMMReadoutElement
const MMReadoutElement * getMMReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:257
MuonPRDTest::MMRDOVariables::dump
unsigned int dump(const EventContext &ctx, const Muon::MM_RawData &rdo)
Definition: MMRDOVariables.cxx:72
MuonGM::MuonReadoutElement::identify
Identifier identify() const override final
Returns the ATLAS Identifier of the MuonReadOutElement.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:184
MuonPRDTest
Definition: MuonHitTesterAlg.h:15
MuonPRDTest::PrdTesterModule::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: PrdTesterModule.cxx:15
MuonPRDTest::MMRDOVariables::m_externalPush
bool m_externalPush
Flag telling whether an external prd has been pushed.
Definition: MMRDOVariables.h:53
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
MuonGM::MMReadoutElement
An MMReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station con...
Definition: MMReadoutElement.h:25
MuonVal::VectorBranch::size
size_t size() const
Returns the number of actual saved elements.
Trk::PlaneSurface::localToGlobal
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.
Definition: PlaneSurface.cxx:198
MuonPRDTest::MMRDOVariables::m_NSWMM_nRDO
ScalarBranch< unsigned int > & m_NSWMM_nRDO
Definition: MMRDOVariables.h:37
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
Identifier
Definition: IdentifierFieldParser.cxx:14