Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
sTGCRDOVariables.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 
8 
9 using namespace Muon;
10 namespace MuonPRDTest {
11  sTGCRDOVariables::sTGCRDOVariables(MuonTesterTree& tree, const std::string& container_name, MSG::Level msglvl) :
12  PrdTesterModule(tree, "RDO_sTGC", msglvl), m_key{container_name} {}
14 
15  bool sTGCRDOVariables::fill(const EventContext& ctx) {
16  ATH_MSG_DEBUG("do fillsTGCRDOVariables()");
17  SG::ReadHandle<STGC_RawDataContainer> stgcrdoContainer{m_key, ctx};
18  if (!stgcrdoContainer.isValid()) {
19  ATH_MSG_FATAL("Failed to retrieve stgc rdo container " << m_key.fullKey());
20  return false;
21  }
22  ATH_MSG_DEBUG("retrieved sTGC rdo Container with size " << stgcrdoContainer->size());
23 
24  if (stgcrdoContainer->size() == 0) ATH_MSG_DEBUG(" sTGC rdo Container empty ");
25  for (const STGC_RawDataCollection* coll : *stgcrdoContainer) {
26  if(m_applyFilter && !m_filteredChamb.count(coll->identifyHash())){
27  continue;
28  }
29  for (const STGC_RawData* rdo : *coll) {
30  dump(ctx, *rdo);
31  }
32  }
34  ATH_MSG_DEBUG(" finished fillsTGCRDOVariables()");
35  return true;
36  }
37 
38 
39 
40  unsigned int sTGCRDOVariables::push_back(const EventContext& ctx, const Muon::STGC_RawData& rdo) {
41  m_externalPush = true;
42  return dump(ctx, rdo);
43  }
44 
46 
48  m_applyFilter = true;
49  m_filteredChamb.insert(idHelperSvc()->moduleHash(detEle.identify()));
50  }
51 
52 
53  unsigned int sTGCRDOVariables::push_back(const EventContext& ctx, const Identifier& id) {
54  SG::ReadHandle<STGC_RawDataContainer> stgcrdoContainer{m_key, ctx};
55  if (!stgcrdoContainer.isValid()) {
56  ATH_MSG_FATAL("Failed to retrieve sTGC rdo container " << m_key.fullKey());
57  return -1;
58  }
59  ATH_MSG_DEBUG("retrieved sTGC rdo Container with size " << stgcrdoContainer->size());
60 
61  const STGC_RawDataCollection* coll = stgcrdoContainer->indexFindPtr(idHelperSvc()->moduleHash(id));
62  for (const STGC_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  unsigned int sTGCRDOVariables::dump(const EventContext& ctx,const Muon::STGC_RawData& rdo) {
72  const Identifier Id = rdo.identify();
73 
74  if (m_filteredRDOs.count(Id)) {
75  ATH_MSG_VERBOSE("The hit has already been added " << idHelperSvc()->toString(Id));
76  return m_filteredRDOs.at(Id);
77  }
78 
79  const MuonGM::MuonDetectorManager* MuonDetMgr = getDetMgr(ctx);
80  if (!MuonDetMgr) {
81  ATH_MSG_ERROR("MuonDetMgr not found");
82  return -1;
83  }
84 
85  const MuonGM::sTgcReadoutElement* rdoEl = MuonDetMgr->getsTgcReadoutElement(Id);
86  if (!rdoEl) {
87  ATH_MSG_ERROR("The sTGC hit "<<idHelperSvc()->toString(Id)<<" does not have a detector element attached. That should actually never happen");
88  return -1;
89  }
90  Amg::Vector2D localStripPos(0.,0.);
91  if ( rdoEl->stripPosition(Id,localStripPos) ) {
92  ATH_MSG_WARNING("The sTGC hit "<<idHelperSvc()->toString(Id)<<" does not have a valid strip position.");
93  return -1;
94  }
95 
102 
103  m_NSWsTGC_rdo_localPosX.push_back(localStripPos.x());
104  m_NSWsTGC_rdo_localPosY.push_back(localStripPos.y());
105 
106  Amg::Vector3D globalStripPos(0., 0., 0.);
107  rdoEl->surface(Id).localToGlobal(localStripPos,Amg::Vector3D(0.,0.,0.),globalStripPos);
108  m_NSWsTGC_rdo_globalPos.push_back(globalStripPos);
109  unsigned idx = m_filteredRDOs.size();
110  if (m_externalPush) {
111  m_filteredRDOs.insert(std::make_pair(Id, idx));
112  }
113  return idx;
114  }
115 
116 } // namespace MuonPRDTest
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_localPosY
VectorBranch< double > & m_NSWsTGC_rdo_localPosY
Definition: sTGCRDOVariables.h:44
Muon::STGC_RawData::identify
const Identifier identify() const
Definition: STGC_RawData.h:52
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_time
VectorBranch< double > & m_NSWsTGC_rdo_time
Definition: sTGCRDOVariables.h:38
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_isDead
VectorBranch< bool > & m_NSWsTGC_rdo_isDead
Definition: sTGCRDOVariables.h:42
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_tdo
VectorBranch< uint16_t > & m_NSWsTGC_rdo_tdo
Definition: sTGCRDOVariables.h:40
MuonPRDTest::sTGCRDOVariables::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: sTGCRDOVariables.cxx:15
MuonPRDTest::sTGCRDOVariables::m_externalPush
bool m_externalPush
Flag telling whether an external prd has been pushed.
Definition: sTGCRDOVariables.h:55
MuonPRDTest::sTGCRDOVariables::dump
unsigned int dump(const EventContext &ctx, const Muon::STGC_RawData &rdo)
Definition: sTGCRDOVariables.cxx:71
sTgcReadoutElement.h
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_id
sTgcIdentifierBranch m_NSWsTGC_rdo_id
Definition: sTGCRDOVariables.h:46
tree
TChain * tree
Definition: tile_monitor.h:30
MuonPRDTest::sTGCRDOVariables::enableSeededDump
void enableSeededDump()
Dumps only hits which are marked by the dumpAllHitsInChamber method.
Definition: sTGCRDOVariables.cxx:45
MuonPRDTest::PrdTesterModule::getDetMgr
const MuonGM::MuonDetectorManager * getDetMgr(const EventContext &ctx) const
Definition: PrdTesterModule.cxx:16
MuonVal::sTgcIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:79
sTGCRDOVariables.h
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_localPosX
VectorBranch< double > & m_NSWsTGC_rdo_localPosX
Definition: sTGCRDOVariables.h:43
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::sTGCRDOVariables::m_filteredChamb
std::unordered_set< IdentifierHash > m_filteredChamb
Set of chambers to be dumped.
Definition: sTGCRDOVariables.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
MuonGM::sTgcReadoutElement::stripPosition
virtual bool stripPosition(const Identifier &id, Amg::Vector2D &pos) const override final
strip position - should be renamed to channel position If the strip number is outside the range of va...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:321
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
MuonPRDTest::sTGCRDOVariables::m_filteredRDOs
std::unordered_map< Identifier, unsigned int > m_filteredRDOs
Set of particular chambers to be dumped.
Definition: sTGCRDOVariables.h:51
MuonPRDTest::sTGCRDOVariables::declare_keys
bool declare_keys() override final
Definition: sTGCRDOVariables.cxx:13
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::sTGCRDOVariables::push_back
unsigned int push_back(const EventContext &ctx, const Muon::STGC_RawData &rdo)
Adds a RDO to the output tree.
Definition: sTGCRDOVariables.cxx:40
Muon::STGC_RawData
Definition: STGC_RawData.h:14
Muon::STGC_RawData::tdo
unsigned int tdo() const
Definition: STGC_RawData.h:56
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonGM::sTgcReadoutElement
An sTgcReadoutElement corresponds to a single STGC module; therefore typicaly a barrel muon station c...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h:30
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_nRDO
ScalarBranch< unsigned int > & m_NSWsTGC_nRDO
Definition: sTGCRDOVariables.h:37
MuonPRDTest::PrdTesterModule
Definition: PrdTesterModule.h:15
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_charge
VectorBranch< uint16_t > & m_NSWsTGC_rdo_charge
Definition: sTGCRDOVariables.h:39
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_bcTag
VectorBranch< uint16_t > & m_NSWsTGC_rdo_bcTag
Definition: sTGCRDOVariables.h:41
MuonPRDTest::sTGCRDOVariables::m_NSWsTGC_rdo_globalPos
ThreeVectorBranch m_NSWsTGC_rdo_globalPos
Definition: sTGCRDOVariables.h:45
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
Muon::STGC_RawData::isDead
bool isDead() const
Definition: STGC_RawData.h:60
MuonPRDTest::sTGCRDOVariables::m_key
SG::ReadHandleKey< Muon::STGC_RawDataContainer > m_key
Definition: sTGCRDOVariables.h:36
Muon::STGC_RawData::time
float time() const
Definition: STGC_RawData.h:55
MuonPRDTest::sTGCRDOVariables::dumpAllHitsInChamber
void dumpAllHitsInChamber(const MuonGM::sTgcReadoutElement &detEle)
Adds all hits in this particular chamber to the output n-tuple.
Definition: sTGCRDOVariables.cxx:47
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
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::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
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
Muon::STGC_RawDataCollection
Definition: STGC_RawDataCollection.h:18
MuonPRDTest::sTGCRDOVariables::m_applyFilter
bool m_applyFilter
Apply a filter to dump the prds.
Definition: sTGCRDOVariables.h:53
MuonVal::VectorBranch::size
size_t size() const
Returns the number of actual saved elements.
MuonGM::MuonDetectorManager::getsTgcReadoutElement
const sTgcReadoutElement * getsTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:261
Muon::STGC_RawData::charge
unsigned int charge() const
Definition: STGC_RawData.h:57
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
Muon::STGC_RawData::bcTag
uint16_t bcTag() const
Definition: STGC_RawData.h:58
Identifier
Definition: IdentifierFieldParser.cxx:14