ATLAS Offline Software
MuonHoughDataNtuple.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "MuonHoughDataNtuple.h"
8 #include <unordered_set>
9 
10 using namespace Muon::MuonStationIndex;
13  truthPart{truthPart_}{
14  for (const std::string hitColl : {"truthMdtHits", "truthRpcHits", "truthTgcHits", "truthCscHits"}) {
16  if (!acc.isAvailable(*truthPart)) continue;
17  for (const long long unsigned id : acc(*truthPart)){
18  assocHits.emplace(id);
19  }
20  }
21  }
22  const xAOD::TruthParticle* truthPart{nullptr};
23  std::unordered_set<Identifier> assocHits{};
24 };
25 
26 MuonHoughDataNtuple::MuonHoughDataNtuple(const std::string& name, ISvcLocator* pSvcLocator) :
27  AthHistogramAlgorithm(name, pSvcLocator) {}
28 
30 
32 {
36  m_truth_tree.addBranch(std::make_unique<MuonVal::EventInfoBranch>(m_truth_tree, 0));
37  m_eta_hit_tree.addBranch(std::make_unique<MuonVal::EventInfoBranch>(m_eta_hit_tree, 0));
38  m_phi_hit_tree.addBranch(std::make_unique<MuonVal::EventInfoBranch>(m_phi_hit_tree, 0));
39 
40 
42 
45  ATH_CHECK(m_idHelperSvc.retrieve());
46  ATH_MSG_DEBUG("MuonHoughDataNtuple succesfully initialised");
47 
48  return StatusCode::SUCCESS;
49 }
50 
52 {
56  return StatusCode::SUCCESS;
57 }
58 
60 {
61  // retrieve containers
62  const EventContext & context = Gaudi::Hive::currentContext();
64 
66 
67  if(!houghSecVec.isValid()){
68  ATH_MSG_FATAL("Failed to retrieve Hough data per sector vector");
69  return StatusCode::FAILURE;
70  }
71 
72  std::vector<HitTruthMatching> truthMuons{};
73 
75 
76  if(!truthMuonContainer.isValid()){
77  ATH_MSG_FATAL("Failed to retrieve truth muon container");
78  return StatusCode::FAILURE;
79  }
80  for (const xAOD::TruthParticle* truth_mu : *truthMuonContainer) {
81  truthMuons.emplace_back(truth_mu);
82  }
83 
84  if(!truthSegContainer.isValid()){
85  ATH_MSG_FATAL("Failed to retrieve truth segment container");
86  return StatusCode::FAILURE;
87  }
88  ATH_MSG_DEBUG("Houghidipuff retrieved all input collections! Start puffing...");
89 
90  // filling variables for eta/phi hit with maximum entries for hough
91  for(unsigned int sec_i=0; sec_i<houghSecVec->vec.size(); ++sec_i){ // looping sector
92  // Eta Hit
93  // starting from all layers
94  for (const std::vector<std::shared_ptr<MuonHough::MuonLayerHough::Maximum>>& maxvec :
95  houghSecVec->vec[sec_i].maxVec){
96  // then to all Maxima in the same layer
97  for(const std::shared_ptr<MuonHough::MuonLayerHough::Maximum>& max : maxvec){ // looping maximum collection
98  m_maxHit_sector = sec_i;
99  m_maxHit_z0 = max->pos;
100  m_maxHit_theta = max->theta;
101  m_maxHit_region = toInt(max->refregion);
102  bool firstHit = true; // to store station information
103  // now record all hits in the maximum
104  int hit_index = 0;
105  for (const std::shared_ptr<MuonHough::Hit>& hit : max->hits){
106  m_hit_x.push_back(hit->x);
107  m_hit_ymin.push_back(hit->ymin);
108  m_hit_ymax.push_back(hit->ymax);
109  m_hit_w.push_back(hit->w);
110  // hit debug info
111  const MuonHough::HitDebugInfo* hdi = hit->debugInfo();
112  m_hit_tech.push_back(hdi->type);
113  // more information from prd
114  if(hit->prd){
115  const Trk::PrepRawData* prd = hit->prd;
116  const Identifier measId = prd->identify();
117  // station info
118  if(firstHit){
119  m_maxHit_stationIndex = toInt(m_idHelperSvc->stationIndex(measId));
120  m_maxHit_stationEta = m_idHelperSvc->stationEta(measId);
121  m_maxHit_stationPhi = m_idHelperSvc->stationPhi(measId);
122  firstHit = false;
123  }
124  // local position
126  // global position -- which is the real one???
127  const Muon::MdtPrepData* DC{dynamic_cast<const Muon::MdtPrepData*>(prd)};
128  if (DC) m_hit_global.push_back(DC->globalPosition());
129  const Muon::MuonCluster* CL{dynamic_cast<const Muon::MuonCluster*>(prd)};
130  if (CL) m_hit_global.push_back(CL->globalPosition());
131  // information from identifiers
132  if (m_idHelperSvc->isMdt(measId)) {
133  m_hit_mdtId.push_back(measId);
134  m_hit_mdtIndex.push_back(hit_index);
135  }
136  else if (m_idHelperSvc->isCsc(measId)) {
137  m_hit_cscId.push_back(measId);
138  m_hit_cscIndex.push_back(hit_index);
139  }
140  else if (m_idHelperSvc->isTgc(measId)) {
141  m_hit_tgcId.push_back(measId);
142  m_hit_tgcIndex.push_back(hit_index);
143  }
144  else if (m_idHelperSvc->isRpc(measId)) {
145  m_hit_rpcId.push_back(measId);
146  m_hit_rpcIndex.push_back(hit_index);
147  }
148  else if (m_idHelperSvc->isMM(measId)) {
149  m_hit_mmId.push_back(measId);
150  m_hit_mmIndex.push_back(hit_index);
151  }
152  else if (m_idHelperSvc->issTgc(measId)) {
153  m_hit_stgcId.push_back(measId);
154  m_hit_stgcIndex.push_back(hit_index);
155  }
156  hit_index++;
157  // truth matching to muons
158  bool matched = std::find_if(truthMuons.begin(), truthMuons.end(),
159  [prd](const HitTruthMatching& hit){
160  return hit.assocHits.count(prd->identify());
161  }) != truthMuons.end();
162 
164  }
165  }
166  ATH_CHECK(m_eta_hit_tree.fill(context));
167  }
168  }
169  // PhiHit vec
170  // starting from all layers
171  for (const std::vector<std::shared_ptr<MuonHough::MuonPhiLayerHough::Maximum>>& phimaxvec :
172  houghSecVec->vec[sec_i].phiMaxVec){
173  // then to all Maxima in the same layer
174  for(const std::shared_ptr<MuonHough::MuonPhiLayerHough::Maximum>& max : phimaxvec){ // looping maximum collection
175  m_maxPhiHit_sector = sec_i;
176  m_maxPhiHit_z0 = max->pos;
177  bool firstHit = true; // to store station information
178  // now record all hits in the maximum
179  int phiHit_index = 0;
180  for (const std::shared_ptr<MuonHough::PhiHit>& phi_hit : max->hits){
181  m_phiHit_x.push_back(phi_hit->r);
182  m_phiHit_ymin.push_back(phi_hit->phimin);
183  m_phiHit_ymax.push_back(phi_hit->phimax);
184  m_phiHit_w.push_back(phi_hit->w);
185  // phi hit debug info
186  const MuonHough::HitDebugInfo* hdi = phi_hit->debugInfo();
188  // information from prd
189  if(phi_hit->prd){
190  const Trk::PrepRawData* prd = phi_hit->prd;
191  const Identifier measId = prd->identify();
192  // station info
193  if(firstHit){
194  m_maxPhiHit_stationIndex = toInt(m_idHelperSvc->stationIndex(prd->identify()));
195  m_maxPhiHit_stationEta = m_idHelperSvc->stationEta(prd->identify());
196  m_maxPhiHit_stationPhi = m_idHelperSvc->stationPhi(prd->identify());
197  firstHit = false;
198  }
199  // local position
201  // global position -- which is the real one???
202  const Muon::MdtPrepData* DC{dynamic_cast<const Muon::MdtPrepData*>(prd)};
203  if (DC) m_phiHit_global.push_back(DC->globalPosition());
204  const Muon::MuonCluster* CL{dynamic_cast<const Muon::MuonCluster*>(prd)};
205  if (CL) m_phiHit_global.push_back(CL->globalPosition());
206  // information from identifiers
207  if (m_idHelperSvc->isMdt(measId)) {
208  m_phiHit_mdtId.push_back(measId);
209  m_phiHit_mdtIndex.push_back(phiHit_index);
210  }
211  else if (m_idHelperSvc->isCsc(measId)) {
212  m_phiHit_cscId.push_back(measId);
213  m_phiHit_cscIndex.push_back(phiHit_index);
214  }
215  else if (m_idHelperSvc->isTgc(measId)) {
216  m_phiHit_tgcId.push_back(measId);
217  m_phiHit_tgcIndex.push_back(phiHit_index);
218  }
219  else if (m_idHelperSvc->isRpc(measId)) {
220  m_phiHit_rpcId.push_back(measId);
221  m_phiHit_rpcIndex.push_back(phiHit_index);
222  }
223  else if (m_idHelperSvc->isMM(measId)) {
224  m_phiHit_mmId.push_back(measId);
225  m_phiHit_mmIndex.push_back(phiHit_index);
226  }
227  else if (m_idHelperSvc->issTgc(measId)) {
228  m_phiHit_stgcId.push_back(measId);
229  m_phiHit_stgcIndex.push_back(phiHit_index);
230  }
231  phiHit_index++;
232 
233  // truth matching to muons
234  bool matched = std::find_if(truthMuons.begin(), truthMuons.end(),
235  [prd](const HitTruthMatching& hit){
236  return hit.assocHits.count(prd->identify());
237  }) != truthMuons.end();
238 
240  }
241  }
242  ATH_CHECK(m_phi_hit_tree.fill(context));
243  }
244  }
245  }
246 
247  // filling truth values
248  for(const xAOD::TruthParticle* truthMu: *truthMuonContainer){
249  m_truth_pdgId = truthMu->pdgId();
250  m_truth_barcode = HepMC::uniqueID(truthMu);
251 
252  m_truth_pt = truthMu->pt();
253  m_truth_eta = truthMu->eta();
254  m_truth_phi = truthMu->phi();
255  // access the truth segment from truth particle
256  static const SG::AuxElement::ConstAccessor<ElementLink<xAOD::TruthParticleContainer>> truthMuLink("truthParticleLink");
257  // filling truth segment values
258  for(const xAOD::MuonSegment* truthSeg: *truthSegContainer){
259  if(!truthMuLink.isAvailable(*truthSeg)) { continue; } // if segment isn't linked to truth muon, skip
260  ElementLink<xAOD::TruthParticleContainer> truthLink = truthMuLink(*truthSeg);
261  const xAOD::TruthParticle* truthParticle = *truthLink;
262  if(truthParticle!=truthMu) { continue; } // i have no idea if this works
263  m_truth_seg_pos.push_back(truthSeg->x(), truthSeg->y(), truthSeg->z());
264  m_truth_seg_p.push_back(truthSeg->px(), truthSeg->py(), truthSeg->pz());
265 
266  m_truth_seg_nPrecisionHits.push_back(truthSeg->nPrecisionHits());
267  m_truth_seg_sector.push_back(truthSeg->sector());
268 
269  int nTriggerHits = truthSeg->nPhiLayers() + truthSeg->nTrigEtaLayers();
270  m_truth_seg_nTriggerHits.push_back(nTriggerHits);
271  }
272  ATH_CHECK(m_truth_tree.fill(context));
273  }
274 
275 
276  return StatusCode::SUCCESS;
277 }
MuonHoughDataNtuple::m_maxHit_z0
MuonVal::ScalarBranch< float > & m_maxHit_z0
Definition: MuonHoughDataNtuple.h:56
MuonHoughDataNtuple::m_maxHit_theta
MuonVal::ScalarBranch< float > & m_maxHit_theta
Definition: MuonHoughDataNtuple.h:57
MuonHoughDataNtuple::m_maxPhiHit_z0
MuonVal::ScalarBranch< float > & m_maxPhiHit_z0
Definition: MuonHoughDataNtuple.h:97
MuonHoughDataNtuple::m_hit_global
MuonVal::ThreeVectorBranch m_hit_global
Definition: MuonHoughDataNtuple.h:74
MuonHoughDataNtuple::m_maxHit_stationIndex
MuonVal::ScalarBranch< int > & m_maxHit_stationIndex
Definition: MuonHoughDataNtuple.h:60
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
MuonVal::MdtIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:24
MuonHough::Hit::ymin
float ymin
global hit position (x=r in barrel, x=z in endcap)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:79
MuonHoughDataNtuple::m_maxHit_sector
MuonVal::ScalarBranch< float > & m_maxHit_sector
Definition: MuonHoughDataNtuple.h:55
MuonHoughDataNtuple::m_hit_tgcIndex
MuonVal::VectorBranch< int > & m_hit_tgcIndex
Definition: MuonHoughDataNtuple.h:86
MuonVal::MuonTesterTree::init
StatusCode init(OWNER *instance)
Initialize method.
MuonHoughDataNtuple::m_truth_seg_nPrecisionHits
MuonVal::VectorBranch< int > & m_truth_seg_nPrecisionHits
Definition: MuonHoughDataNtuple.h:146
MuonHoughDataNtuple::m_phiHit_tgcIndex
MuonVal::VectorBranch< int > & m_phiHit_tgcIndex
Definition: MuonHoughDataNtuple.h:125
MuonHough::PhiHit::debugInfo
const HitDebugInfo * debugInfo() const
weight of the hit
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:122
Muon::MuonStationIndex
Definition: MuonStationIndex.h:13
MuonHough::Hit::w
float w
maximum value of the hit in the precision coordinate (y=z in barrel, y=r in endcap)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:81
MuonHoughDataNtuple::m_hit_local
MuonVal::TwoVectorBranch m_hit_local
Definition: MuonHoughDataNtuple.h:73
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
MuonHough::PhiHit::r
float r
layer identifier (packed word containing technology/sublayer)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:116
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
MuonVal::CscIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:52
MuonHoughDataNtuple::m_hit_w
MuonVal::VectorBranch< float > & m_hit_w
Definition: MuonHoughDataNtuple.h:68
MuonHough::HitDebugInfo
struct containing additional debug information on the hits that is not needed for the actual alg but ...
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:26
MuonHoughDataNtuple::m_hit_cscId
MuonVal::CscIdentifierBranch m_hit_cscId
Definition: MuonHoughDataNtuple.h:78
MuonHoughDataNtuple::m_hit_mmId
MuonVal::TgcIdentifierBranch m_hit_mmId
Definition: MuonHoughDataNtuple.h:81
MuonHoughDataNtuple::m_truth_seg_p
MuonVal::ThreeVectorBranch m_truth_seg_p
Definition: MuonHoughDataNtuple.h:144
MuonHoughDataNtuple::m_phi_hit_tree
MuonVal::MuonTesterTree m_phi_hit_tree
Definition: MuonHoughDataNtuple.h:94
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
MuonHoughDataNtuple::execute
virtual StatusCode execute() override
Definition: MuonHoughDataNtuple.cxx:59
MuonHoughDataNtuple::m_truthMuonKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthMuonKey
Definition: MuonHoughDataNtuple.h:44
MuonVal::RpcIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:36
MuonHoughDataNtuple::m_truth_eta
MuonVal::ScalarBranch< float > & m_truth_eta
Definition: MuonHoughDataNtuple.h:139
EventInfoBranch.h
MuonHoughDataNtuple::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonHoughDataNtuple.h:50
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
MuonHoughDataNtuple::m_maxPhiHit_stationIndex
MuonVal::ScalarBranch< int > & m_maxPhiHit_stationIndex
Definition: MuonHoughDataNtuple.h:99
MuonHoughDataNtuple::m_hit_stgcId
MuonVal::TgcIdentifierBranch m_hit_stgcId
Definition: MuonHoughDataNtuple.h:82
MuonHoughDataNtuple::m_maxHit_stationEta
MuonVal::ScalarBranch< int > & m_maxHit_stationEta
Definition: MuonHoughDataNtuple.h:61
MuonHoughDataNtuple.h
MuonHoughDataNtuple::m_phiHit_x
MuonVal::VectorBranch< float > & m_phiHit_x
Definition: MuonHoughDataNtuple.h:104
MuonHoughDataNtuple::m_phiHit_tgcId
MuonVal::TgcIdentifierBranch m_phiHit_tgcId
Definition: MuonHoughDataNtuple.h:118
MuonHoughDataNtuple::m_houghDataPerSectorVecKey
SG::ReadHandleKey< Muon::HoughDataPerSectorVec > m_houghDataPerSectorVecKey
Definition: MuonHoughDataNtuple.h:49
MuonHoughDataNtuple::m_truth_seg_nTriggerHits
MuonVal::VectorBranch< int > & m_truth_seg_nTriggerHits
Definition: MuonHoughDataNtuple.h:147
MuonHoughDataNtuple::~MuonHoughDataNtuple
virtual ~MuonHoughDataNtuple() override
Definition: MuonHoughDataNtuple.cxx:29
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonHoughDataNtuple::m_truth_barcode
MuonVal::ScalarBranch< int > & m_truth_barcode
Definition: MuonHoughDataNtuple.h:136
HitTruthMatching::HitTruthMatching
HitTruthMatching(const xAOD::TruthParticle *truthPart_)
Definition: MuonHoughDataNtuple.cxx:12
MuonHough::PhiHit::w
float w
maximum value of the hit in the precision coordinate (y=z in barrel, y=r in endcap)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:119
MuonVal::TgcIdentifierBranch::push_back
void push_back(const Identifier &id) override final
Definition: IdentifierBranch.cxx:66
MuonHoughDataNtuple::m_truth_phi
MuonVal::ScalarBranch< float > & m_truth_phi
Definition: MuonHoughDataNtuple.h:140
MuonHough::HitDebugInfo::type
int type
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:35
MuonHough::PhiHit::phimax
float phimax
minimum value of the hit in the precision coordinate (y=z in barrel, y=r in endcap)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:118
MuonVal::TwoVectorBranch::push_back
void push_back(const Amg::Vector2D &vec)
interface using the Amg::Vector3D
Definition: TwoVectorBranch.cxx:21
MuonHoughDataNtuple::m_phiHit_tech
MuonVal::VectorBranch< int > & m_phiHit_tech
Definition: MuonHoughDataNtuple.h:109
MuonHoughDataNtuple::m_hit_rpcId
MuonVal::RpcIdentifierBranch m_hit_rpcId
Definition: MuonHoughDataNtuple.h:80
MuonHoughDataNtuple::m_phiHit_local
MuonVal::TwoVectorBranch m_phiHit_local
Definition: MuonHoughDataNtuple.h:112
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonHoughDataNtuple::m_maxPhiHit_stationPhi
MuonVal::ScalarBranch< int > & m_maxPhiHit_stationPhi
Definition: MuonHoughDataNtuple.h:101
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
MuonHough::Hit::x
float x
layer identifier (packed word containing technology/sublayer)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:78
MuonHoughDataNtuple::m_hit_rpcIndex
MuonVal::VectorBranch< int > & m_hit_rpcIndex
Definition: MuonHoughDataNtuple.h:87
MuonHoughDataNtuple::m_hit_stgcIndex
MuonVal::VectorBranch< int > & m_hit_stgcIndex
Definition: MuonHoughDataNtuple.h:89
HepMC::uniqueID
int uniqueID(const T &p)
Definition: MagicNumbers.h:116
MuonHoughDataNtuple::m_hit_ymax
MuonVal::VectorBranch< float > & m_hit_ymax
Definition: MuonHoughDataNtuple.h:67
MuonHoughDataNtuple::m_maxPhiHit_sector
MuonVal::ScalarBranch< float > & m_maxPhiHit_sector
Definition: MuonHoughDataNtuple.h:96
MuonHoughDataNtuple::m_truth_tree
MuonVal::MuonTesterTree m_truth_tree
Definition: MuonHoughDataNtuple.h:133
MuonHoughDataNtuple::m_phiHit_mdtIndex
MuonVal::VectorBranch< int > & m_phiHit_mdtIndex
Definition: MuonHoughDataNtuple.h:123
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonHoughDataNtuple::m_hit_ymin
MuonVal::VectorBranch< float > & m_hit_ymin
Definition: MuonHoughDataNtuple.h:66
MuonHoughDataNtuple::m_phiHit_mmId
MuonVal::TgcIdentifierBranch m_phiHit_mmId
Definition: MuonHoughDataNtuple.h:120
MuonHoughDataNtuple::m_hit_cscIndex
MuonVal::VectorBranch< int > & m_hit_cscIndex
Definition: MuonHoughDataNtuple.h:85
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
MuonHoughDataNtuple::m_phiHit_stgcIndex
MuonVal::VectorBranch< int > & m_phiHit_stgcIndex
Definition: MuonHoughDataNtuple.h:128
MuonHoughDataNtuple::m_maxPhiHit_stationEta
MuonVal::ScalarBranch< int > & m_maxPhiHit_stationEta
Definition: MuonHoughDataNtuple.h:100
MuonHoughDataNtuple::m_truthSegmentsKey
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_truthSegmentsKey
Definition: MuonHoughDataNtuple.h:46
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
MuonHoughDataNtuple::MuonHoughDataNtuple
MuonHoughDataNtuple(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonHoughDataNtuple.cxx:26
MuonHoughDataNtuple::m_hit_tgcId
MuonVal::TgcIdentifierBranch m_hit_tgcId
Definition: MuonHoughDataNtuple.h:79
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
Trk::PrepRawData
Definition: PrepRawData.h:62
MuonHoughDataNtuple::m_phiHit_rpcIndex
MuonVal::VectorBranch< int > & m_phiHit_rpcIndex
Definition: MuonHoughDataNtuple.h:126
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
MuonHough::PhiHit::prd
const Trk::PrepRawData * prd
access to assiciated hit, either the prd or the tgc pointer is set in athena
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:126
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
MagicNumbers.h
HitTruthMatching
Definition: MuonHoughDataNtuple.cxx:11
MuonHoughDataNtuple::m_phiHit_ymax
MuonVal::VectorBranch< float > & m_phiHit_ymax
Definition: MuonHoughDataNtuple.h:106
MuonR4::SegmentFit::toInt
constexpr int toInt(const ParamDefs p)
Definition: MuonHoughDefs.h:42
Trk::PrepRawData::localPosition
const Amg::Vector2D & localPosition() const
return the local position reference
MuonHoughDataNtuple::m_hit_tech
MuonVal::VectorBranch< int > & m_hit_tech
Definition: MuonHoughDataNtuple.h:70
python.ElectronD3PDObject.matched
matched
Definition: ElectronD3PDObject.py:138
Muon::MdtPrepData
Class to represent measurements from the Monitored Drift Tubes.
Definition: MdtPrepData.h:33
MuonHoughDataNtuple::m_truth_seg_sector
MuonVal::VectorBranch< int > & m_truth_seg_sector
Definition: MuonHoughDataNtuple.h:148
MuonHoughDataNtuple::initialize
virtual StatusCode initialize() override
Definition: MuonHoughDataNtuple.cxx:31
MuonHoughDataNtuple::m_hit_mdtIndex
MuonVal::VectorBranch< int > & m_hit_mdtIndex
Definition: MuonHoughDataNtuple.h:84
MuonHoughDataNtuple::m_phiHit_cscId
MuonVal::CscIdentifierBranch m_phiHit_cscId
Definition: MuonHoughDataNtuple.h:117
MuonHoughDataNtuple::m_truth_pdgId
MuonVal::ScalarBranch< int > & m_truth_pdgId
Definition: MuonHoughDataNtuple.h:135
MuonHoughDataNtuple::m_truth_pt
MuonVal::ScalarBranch< float > & m_truth_pt
Definition: MuonHoughDataNtuple.h:138
MuonHoughDataNtuple::m_phiHit_rpcId
MuonVal::RpcIdentifierBranch m_phiHit_rpcId
Definition: MuonHoughDataNtuple.h:119
MuonHoughDataNtuple::m_phiHit_stgcId
MuonVal::TgcIdentifierBranch m_phiHit_stgcId
Definition: MuonHoughDataNtuple.h:121
MuonHoughDataNtuple::m_hit_mmIndex
MuonVal::VectorBranch< int > & m_hit_mmIndex
Definition: MuonHoughDataNtuple.h:88
MuonHoughDataNtuple::m_maxHit_region
MuonVal::ScalarBranch< int > & m_maxHit_region
Definition: MuonHoughDataNtuple.h:58
MuonHoughDataNtuple::m_phiHit_ymin
MuonVal::VectorBranch< float > & m_phiHit_ymin
Definition: MuonHoughDataNtuple.h:105
MuonHoughDataNtuple::m_maxHit_stationPhi
MuonVal::ScalarBranch< int > & m_maxHit_stationPhi
Definition: MuonHoughDataNtuple.h:62
MuonHough::PhiHit::phimin
float phimin
global hit position (x=r in barrel, x=z in endcap)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:117
MuonVal::MuonTesterTree::fill
bool fill(const EventContext &ctx)
Fills the tree per call.
Definition: MuonTesterTree.cxx:89
MuonVal::MuonTesterTree::write
StatusCode write()
Finally write the TTree objects.
Definition: MuonTesterTree.cxx:178
MuonHough::Hit::prd
const Trk::PrepRawData * prd
access to assiciated hit, either the prd or the tgc pointer is set in athena
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:88
MuonHoughDataNtuple::m_phiHit_global
MuonVal::ThreeVectorBranch m_phiHit_global
Definition: MuonHoughDataNtuple.h:113
MuonHoughDataNtuple::m_eta_hit_tree
MuonVal::MuonTesterTree m_eta_hit_tree
Definition: MuonHoughDataNtuple.h:53
MuonHoughDataNtuple::m_hit_truthMatched
MuonVal::VectorBranch< bool > & m_hit_truthMatched
Definition: MuonHoughDataNtuple.h:91
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
MuonHoughDataNtuple::m_phiHit_mmIndex
MuonVal::VectorBranch< int > & m_phiHit_mmIndex
Definition: MuonHoughDataNtuple.h:127
Muon::MuonCluster
Class representing clusters in the muon system.
Definition: MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonPrepRawData/MuonPrepRawData/MuonCluster.h:37
MuonHough::Hit::ymax
float ymax
minimum value of the hit in the precision coordinate (y=z in barrel, y=r in endcap)
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:80
MuonHoughDataNtuple::finalize
virtual StatusCode finalize() override
Definition: MuonHoughDataNtuple.cxx:51
MuonHoughDataNtuple::m_truth_seg_pos
MuonVal::ThreeVectorBranch m_truth_seg_pos
Definition: MuonHoughDataNtuple.h:143
MuonHough::Hit::debugInfo
const HitDebugInfo * debugInfo() const
weight of the hit
Definition: MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/MuonLayerHough/Hit.h:84
MuonHoughDataNtuple::m_hit_x
MuonVal::VectorBranch< float > & m_hit_x
Definition: MuonHoughDataNtuple.h:65
MuonHoughDataNtuple::m_phiHit_cscIndex
MuonVal::VectorBranch< int > & m_phiHit_cscIndex
Definition: MuonHoughDataNtuple.h:124
MuonHoughDataNtuple::m_hit_mdtId
MuonVal::MdtIdentifierBranch m_hit_mdtId
Definition: MuonHoughDataNtuple.h:77
MuonHoughDataNtuple::m_phiHit_w
MuonVal::VectorBranch< float > & m_phiHit_w
Definition: MuonHoughDataNtuple.h:107
MuonHoughDataNtuple::m_phiHit_truthMatched
MuonVal::VectorBranch< bool > & m_phiHit_truthMatched
Definition: MuonHoughDataNtuple.h:130
MuonVal::MuonTesterTree::addBranch
bool addBranch(std::shared_ptr< IMuonTesterBranch > branch)
Branch is added to the tree without transferring the ownership.
Definition: MuonTesterTree.cxx:61
MuonHoughDataNtuple::m_phiHit_mdtId
MuonVal::MdtIdentifierBranch m_phiHit_mdtId
Definition: MuonHoughDataNtuple.h:116
Identifier
Definition: IdentifierFieldParser.cxx:14