ATLAS Offline Software
MuonHoughDataNtuple.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "MuonHoughDataNtuple.h"
8 #include <unordered_set>
9 
12  truthPart{_truthPart}{
13  for (const std::string hitColl : {"truthMdtHits", "truthRpcHits", "truthTgcHits", "truthCscHits"}) {
15  if (!acc.isAvailable(*truthPart)) continue;
16  for (const long long unsigned id : acc(*truthPart)){
17  assocHits.emplace(id);
18  }
19  }
20  }
21  const xAOD::TruthParticle* truthPart{nullptr};
22  std::unordered_set<Identifier> assocHits{};
23 };
24 
25 MuonHoughDataNtuple::MuonHoughDataNtuple(const std::string& name, ISvcLocator* pSvcLocator) :
26  AthHistogramAlgorithm(name, pSvcLocator) {}
27 
29 
31 {
34  ATH_CHECK(m_truthSegmentsKey.initialize());
35  m_truth_tree.addBranch(std::make_unique<MuonVal::EventInfoBranch>(m_truth_tree, 0));
36  m_eta_hit_tree.addBranch(std::make_unique<MuonVal::EventInfoBranch>(m_eta_hit_tree, 0));
37  m_phi_hit_tree.addBranch(std::make_unique<MuonVal::EventInfoBranch>(m_phi_hit_tree, 0));
38 
39 
41 
44  ATH_CHECK(m_idHelperSvc.retrieve());
45  ATH_MSG_DEBUG("MuonHoughDataNtuple succesfully initialised");
46 
47  return StatusCode::SUCCESS;
48 }
49 
51 {
55  return StatusCode::SUCCESS;
56 }
57 
59 {
60  // retrieve containers
61  const EventContext & context = Gaudi::Hive::currentContext();
63 
65 
66  if(!houghSecVec.isValid()){
67  ATH_MSG_FATAL("Failed to retrieve Hough data per sector vector");
68  return StatusCode::FAILURE;
69  }
70 
71  std::vector<HitTruthMatching> truthMuons{};
72 
74 
75  if(!truthMuonContainer.isValid()){
76  ATH_MSG_FATAL("Failed to retrieve truth muon container");
77  return StatusCode::FAILURE;
78  }
79  for (const xAOD::TruthParticle* truth_mu : *truthMuonContainer) {
80  truthMuons.emplace_back(truth_mu);
81  }
82 
83  if(!truthSegContainer.isValid()){
84  ATH_MSG_FATAL("Failed to retrieve truth segment container");
85  return StatusCode::FAILURE;
86  }
87  ATH_MSG_DEBUG("Houghidipuff retrieved all input collections! Start puffing...");
88 
89  // filling variables for eta/phi hit with maximum entries for hough
90  for(unsigned int sec_i=0; sec_i<houghSecVec->vec.size(); ++sec_i){ // looping sector
91  // Eta Hit
92  // starting from all layers
93  for (const std::vector<std::shared_ptr<MuonHough::MuonLayerHough::Maximum>>& maxvec :
94  houghSecVec->vec[sec_i].maxVec){
95  // then to all Maxima in the same layer
96  for(const std::shared_ptr<MuonHough::MuonLayerHough::Maximum>& max : maxvec){ // looping maximum collection
97  m_maxHit_sector = sec_i;
98  m_maxHit_z0 = max->pos;
99  m_maxHit_theta = max->theta;
100  m_maxHit_region = max->refregion;
101  bool firstHit = true; // to store station information
102  // now record all hits in the maximum
103  int hit_index = 0;
104  for (const std::shared_ptr<MuonHough::Hit>& hit : max->hits){
105  m_hit_x.push_back(hit->x);
106  m_hit_ymin.push_back(hit->ymin);
107  m_hit_ymax.push_back(hit->ymax);
108  m_hit_w.push_back(hit->w);
109  // hit debug info
110  const MuonHough::HitDebugInfo* hdi = hit->debugInfo();
111  m_hit_tech.push_back(hdi->type);
112  // more information from prd
113  if(hit->prd){
114  const Trk::PrepRawData* prd = hit->prd;
115  const Identifier measId = prd->identify();
116  // station info
117  if(firstHit){
118  m_maxHit_stationIndex = m_idHelperSvc->stationIndex(measId);
119  m_maxHit_stationEta = m_idHelperSvc->stationEta(measId);
120  m_maxHit_stationPhi = m_idHelperSvc->stationPhi(measId);
121  firstHit = false;
122  }
123  // local position
125  // global position -- which is the real one???
126  const Muon::MdtPrepData* DC{dynamic_cast<const Muon::MdtPrepData*>(prd)};
127  if (DC) m_hit_global.push_back(DC->globalPosition());
128  const Muon::MuonCluster* CL{dynamic_cast<const Muon::MuonCluster*>(prd)};
129  if (CL) m_hit_global.push_back(CL->globalPosition());
130  // information from identifiers
131  if (m_idHelperSvc->isMdt(measId)) {
132  m_hit_mdtId.push_back(measId);
133  m_hit_mdtIndex.push_back(hit_index);
134  }
135  else if (m_idHelperSvc->isCsc(measId)) {
136  m_hit_cscId.push_back(measId);
137  m_hit_cscIndex.push_back(hit_index);
138  }
139  else if (m_idHelperSvc->isTgc(measId)) {
140  m_hit_tgcId.push_back(measId);
141  m_hit_tgcIndex.push_back(hit_index);
142  }
143  else if (m_idHelperSvc->isRpc(measId)) {
144  m_hit_rpcId.push_back(measId);
145  m_hit_rpcIndex.push_back(hit_index);
146  }
147  else if (m_idHelperSvc->isMM(measId)) {
148  m_hit_mmId.push_back(measId);
149  m_hit_mmIndex.push_back(hit_index);
150  }
151  else if (m_idHelperSvc->issTgc(measId)) {
152  m_hit_stgcId.push_back(measId);
153  m_hit_stgcIndex.push_back(hit_index);
154  }
155  hit_index++;
156  // truth matching to muons
157  bool matched = std::find_if(truthMuons.begin(), truthMuons.end(),
158  [prd](const HitTruthMatching& hit){
159  return hit.assocHits.count(prd->identify());
160  }) != truthMuons.end();
161 
163  }
164  }
165  ATH_CHECK(m_eta_hit_tree.fill(context));
166  }
167  }
168  // PhiHit vec
169  // starting from all layers
170  for (const std::vector<std::shared_ptr<MuonHough::MuonPhiLayerHough::Maximum>>& phimaxvec :
171  houghSecVec->vec[sec_i].phiMaxVec){
172  // then to all Maxima in the same layer
173  for(const std::shared_ptr<MuonHough::MuonPhiLayerHough::Maximum>& max : phimaxvec){ // looping maximum collection
174  m_maxPhiHit_sector = sec_i;
175  m_maxPhiHit_z0 = max->pos;
176  bool firstHit = true; // to store station information
177  // now record all hits in the maximum
178  int phiHit_index = 0;
179  for (const std::shared_ptr<MuonHough::PhiHit>& phi_hit : max->hits){
180  m_phiHit_x.push_back(phi_hit->r);
181  m_phiHit_ymin.push_back(phi_hit->phimin);
182  m_phiHit_ymax.push_back(phi_hit->phimax);
183  m_phiHit_w.push_back(phi_hit->w);
184  // phi hit debug info
185  const MuonHough::HitDebugInfo* hdi = phi_hit->debugInfo();
187  // information from prd
188  if(phi_hit->prd){
189  const Trk::PrepRawData* prd = phi_hit->prd;
190  const Identifier measId = prd->identify();
191  // station info
192  if(firstHit){
193  m_maxPhiHit_stationIndex = m_idHelperSvc->stationIndex(prd->identify());
194  m_maxPhiHit_stationEta = m_idHelperSvc->stationEta(prd->identify());
195  m_maxPhiHit_stationPhi = m_idHelperSvc->stationPhi(prd->identify());
196  firstHit = false;
197  }
198  // local position
200  // global position -- which is the real one???
201  const Muon::MdtPrepData* DC{dynamic_cast<const Muon::MdtPrepData*>(prd)};
202  if (DC) m_phiHit_global.push_back(DC->globalPosition());
203  const Muon::MuonCluster* CL{dynamic_cast<const Muon::MuonCluster*>(prd)};
204  if (CL) m_phiHit_global.push_back(CL->globalPosition());
205  // information from identifiers
206  if (m_idHelperSvc->isMdt(measId)) {
207  m_phiHit_mdtId.push_back(measId);
208  m_phiHit_mdtIndex.push_back(phiHit_index);
209  }
210  else if (m_idHelperSvc->isCsc(measId)) {
211  m_phiHit_cscId.push_back(measId);
212  m_phiHit_cscIndex.push_back(phiHit_index);
213  }
214  else if (m_idHelperSvc->isTgc(measId)) {
215  m_phiHit_tgcId.push_back(measId);
216  m_phiHit_tgcIndex.push_back(phiHit_index);
217  }
218  else if (m_idHelperSvc->isRpc(measId)) {
219  m_phiHit_rpcId.push_back(measId);
220  m_phiHit_rpcIndex.push_back(phiHit_index);
221  }
222  else if (m_idHelperSvc->isMM(measId)) {
223  m_phiHit_mmId.push_back(measId);
224  m_phiHit_mmIndex.push_back(phiHit_index);
225  }
226  else if (m_idHelperSvc->issTgc(measId)) {
227  m_phiHit_stgcId.push_back(measId);
228  m_phiHit_stgcIndex.push_back(phiHit_index);
229  }
230  phiHit_index++;
231 
232  // truth matching to muons
233  bool matched = std::find_if(truthMuons.begin(), truthMuons.end(),
234  [prd](const HitTruthMatching& hit){
235  return hit.assocHits.count(prd->identify());
236  }) != truthMuons.end();
237 
239  }
240  }
241  ATH_CHECK(m_phi_hit_tree.fill(context));
242  }
243  }
244  }
245 
246  // filling truth values
247  for(const xAOD::TruthParticle* truthMu: *truthMuonContainer){
248  m_truth_pdgId = truthMu->pdgId();
249  m_truth_barcode = HepMC::barcode(truthMu); // FIXME barcode-based
250 
251  m_truth_pt = truthMu->pt();
252  m_truth_eta = truthMu->eta();
253  m_truth_phi = truthMu->phi();
254  // access the truth segment from truth particle
255  static const SG::AuxElement::ConstAccessor<ElementLink<xAOD::TruthParticleContainer>> truthMuLink("truthParticleLink");
256  // filling truth segment values
257  for(const xAOD::MuonSegment* truthSeg: *truthSegContainer){
258  if(!truthMuLink.isAvailable(*truthSeg)) { continue; } // if segment isn't linked to truth muon, skip
259  ElementLink<xAOD::TruthParticleContainer> truthLink = truthMuLink(*truthSeg);
260  const xAOD::TruthParticle* truthParticle = *truthLink;
261  if(truthParticle!=truthMu) { continue; } // i have no idea if this works
262  m_truth_seg_pos.push_back(truthSeg->x(), truthSeg->y(), truthSeg->z());
263  m_truth_seg_p.push_back(truthSeg->px(), truthSeg->py(), truthSeg->pz());
264 
265  m_truth_seg_nPrecisionHits.push_back(truthSeg->nPrecisionHits());
266  m_truth_seg_sector.push_back(truthSeg->sector());
267 
268  int nTriggerHits = truthSeg->nPhiLayers() + truthSeg->nTrigEtaLayers();
269  m_truth_seg_nTriggerHits.push_back(nTriggerHits);
270  }
271  ATH_CHECK(m_truth_tree.fill(context));
272  }
273 
274 
275  return StatusCode::SUCCESS;
276 }
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
HitTruthMatching::assocHits
std::unordered_set< Identifier > assocHits
Definition: MuonHoughDataNtuple.cxx:22
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
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:70
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
HitTruthMatching::truthPart
const xAOD::TruthParticle * truthPart
Definition: MuonHoughDataNtuple.cxx:21
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:58
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:28
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
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
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
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
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:25
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
HitTruthMatching::HitTruthMatching
HitTruthMatching(const xAOD::TruthParticle *_truthPart)
Definition: MuonHoughDataNtuple.cxx:11
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
MagicNumbers.h
HitTruthMatching
Definition: MuonHoughDataNtuple.cxx:10
MuonHoughDataNtuple::m_phiHit_ymax
MuonVal::VectorBranch< float > & m_phiHit_ymax
Definition: MuonHoughDataNtuple.h:106
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:30
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:50
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