ATLAS Offline Software
CSCRDOVariables.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 
10 using namespace Muon;
11 namespace MuonPRDTest {
12  CSCRDOVariables::CSCRDOVariables(MuonTesterTree& tree, const std::string& container_name, MSG::Level msglvl, const MuonIdHelper* idhelper, const Muon::ICSC_RDO_Decoder* rdo_decoder) :
13  PrdTesterModule(tree, "RDO_CSC", msglvl), m_key{container_name}, m_rdo_decoder{rdo_decoder} {setHelper(idhelper);}
15 
16  bool CSCRDOVariables::fill(const EventContext& ctx) {
17  ATH_MSG_DEBUG("do fillCSCRDOVariables()");
18  const MuonGM::MuonDetectorManager* MuonDetMgr = getDetMgr(ctx);
19  if (!MuonDetMgr) { return false; }
20  SG::ReadHandle<CscRawDataContainer> cscrdoContainer{m_key, ctx};
21  if (!cscrdoContainer.isValid()) {
22  ATH_MSG_FATAL("Failed to retrieve csc rdo container " << m_key.fullKey());
23  return false;
24  }
25  ATH_MSG_DEBUG("retrieved CSC rdo Container with size " << cscrdoContainer->size());
26 
27  if (cscrdoContainer->size() == 0) ATH_MSG_DEBUG(" CSC rdo Container empty ");
28  unsigned int n_rdo{0};
29  for (const CscRawDataCollection* coll : *cscrdoContainer) {
30  ATH_MSG_DEBUG("processing collection with size " << coll->size());
31  int strip_num{0};
32  for (const CscRawData* rdo: *coll) {
33  const Identifier Id { m_rdo_decoder->channelIdentifier(rdo,m_CscIdHelper,strip_num) };
34  ++strip_num;
35 
36  const MuonGM::CscReadoutElement* rdoEl = MuonDetMgr->getCscReadoutElement(Id);
37  if (!rdoEl) {
38  ATH_MSG_ERROR("The CSC hit "<<idHelperSvc()->toString(Id)<<" does not have a detector element attached. That should actually never happen");
39  return false;
40  }
41 
42  m_CSC_rdo_time.push_back(rdo->time());
43 
44  Amg::Vector3D gpos{0., 0., 0.};
45  Amg::Vector2D lpos(0., 0.);
46 
47  rdoEl->surface(Id).localToGlobal(lpos, gpos, gpos);
50 
51  ++n_rdo;
52  }
53  // Local RDO position information loss after localToGlobal transformation, fill the local positions in another loop for retrieving the local positions
54  for (const CscRawData* rdo: *coll) {
55  const Identifier Id { m_rdo_decoder->channelIdentifier(rdo,m_CscIdHelper,strip_num) };
56  ++strip_num;
57 
58  const MuonGM::CscReadoutElement* rdoEl = MuonDetMgr->getCscReadoutElement(Id);
59  if (!rdoEl) return false;
60 
61  Amg::Vector2D loPos(0.,0.);
62  Amg::Vector3D glPos(0., 0., 0.);
63 
64  rdoEl->surface(Id).globalToLocal(glPos,glPos,loPos);
65  m_CSC_rdo_localPosX.push_back(loPos.x());
66  m_CSC_rdo_localPosY.push_back(loPos.y());
67  }
68  }
69  m_CSC_nRDO = n_rdo;
70  ATH_MSG_DEBUG(" finished fillCSCRDOVariables()");
71  return true;
72  }
73 }
CscIdHelper.h
MuonPRDTest::CSCRDOVariables::declare_keys
bool declare_keys() override final
Definition: CSCRDOVariables.cxx:14
Trk::PlaneSurface::globalToLocal
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const override final
Specified for PlaneSurface: GlobalToLocal method without dynamic memory allocation - boolean checks i...
Definition: PlaneSurface.cxx:213
Muon::ICSC_RDO_Decoder
This class provides conversion from RDO data to CSC RDO Author: Ketevi A.
Definition: ICSC_RDO_Decoder.h:21
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonPRDTest::CSCRDOVariables::m_CSC_rdo_globalPos
ThreeVectorBranch m_CSC_rdo_globalPos
Definition: CSCRDOVariables.h:38
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
MuonVal::CscIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:52
tree
TChain * tree
Definition: tile_monitor.h:30
MuonPRDTest::PrdTesterModule::getDetMgr
const MuonGM::MuonDetectorManager * getDetMgr(const EventContext &ctx) const
Definition: PrdTesterModule.cxx:16
CSCRDOVariables.h
MuonGM::CscReadoutElement
Definition: CscReadoutElement.h:56
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:45
MuonPRDTest::CSCRDOVariables::m_CSC_rdo_localPosX
VectorBranch< float > & m_CSC_rdo_localPosX
Definition: CSCRDOVariables.h:35
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::ICSC_RDO_Decoder::channelIdentifier
virtual Identifier channelIdentifier(const CscRawData *rawData, const CscIdHelper *cscIdHelper, int j) const =0
MuonVal::MuonTesterBranch::declare_dependency
bool declare_dependency(Key &key)
Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
MuonPRDTest::CSCRDOVariables::m_rdo_decoder
const Muon::ICSC_RDO_Decoder * m_rdo_decoder
Definition: CSCRDOVariables.h:33
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonPRDTest::CSCRDOVariables::m_CSC_rdo_time
VectorBranch< int > & m_CSC_rdo_time
Definition: CSCRDOVariables.h:37
MuonIdHelper
Definition: MuonIdHelper.h:80
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::CSCRDOVariables::m_CSC_rdo_id
CscIdentifierBranch m_CSC_rdo_id
Definition: CSCRDOVariables.h:39
MuonPRDTest::CSCRDOVariables::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: CSCRDOVariables.cxx:16
MuonPRDTest::CSCRDOVariables::m_CSC_rdo_localPosY
VectorBranch< float > & m_CSC_rdo_localPosY
Definition: CSCRDOVariables.h:36
MuonGM::MuonDetectorManager::getCscReadoutElement
const CscReadoutElement * getCscReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Definition: MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx:225
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonPRDTest::PrdTesterModule
Definition: PrdTesterModule.h:15
CscReadoutElement.h
CscRawDataCollection
Collection of CSC Raw Hits, arranged according to CSC Detector Elements Author: Ketevi A.
Definition: CscRawDataCollection.h:24
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
CscRawData
Class to hold the electronic output for a single CSC readout channel: n sampling ADC data + the addre...
Definition: CscRawData.h:21
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:50
MuonPRDTest::CSCRDOVariables::m_CscIdHelper
const CscIdHelper * m_CscIdHelper
Definition: CSCRDOVariables.h:32
MuonPRDTest
Definition: CSCDigitVariables.h:10
MuonPRDTest::PrdTesterModule::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Definition: PrdTesterModule.cxx:15
MuonPRDTest::CSCRDOVariables::m_key
SG::ReadHandleKey< CscRawDataContainer > m_key
Definition: CSCRDOVariables.h:31
MuonPRDTest::CSCRDOVariables::m_CSC_nRDO
ScalarBranch< unsigned int > & m_CSC_nRDO
Definition: CSCRDOVariables.h:34
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:204
MuonSimDataCollection.h
Identifier
Definition: IdentifierFieldParser.cxx:14