ATLAS Offline Software
BucketDumperAlg.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 "BucketDumperAlg.h"
6 
7 #include "StoreGate/ReadHandle.h"
15 #include "GeoModelHelpers/TransformSorter.h"
16 #include <fstream>
18 #include "CLHEP/Random/RandFlat.h"
19 
20 namespace {
21  struct LocalSegSorter{
22  bool operator()(const xAOD::MuonSegment* a, const xAOD::MuonSegment* b) const {
23  if(a == b) {
24  return false;
25  }
26  if (a->chamberIndex() != b->chamberIndex()) {
27  return a->chamberIndex() < b->chamberIndex();
28  }
29  if (a->sector() != b->sector()) {
30  return a->sector() < b->sector();
31  }
32  if (a->etaIndex() != b->etaIndex()) {
33  return a->etaIndex() < b->etaIndex();
34  }
35  const GeoTrf::TransformSorter trfSorter{};
36  using namespace MuonR4::SegmentFit;
37  auto locParsA = localSegmentPars(*a);
38  auto locParsB = localSegmentPars(*b);
39  return trfSorter.compare(locParsA.cast<double>(), locParsB.cast<double>())<0;
40  }
41  };
42 }
43 
44 namespace MuonR4{
46  ATH_CHECK(m_spacePointKeys.initialize());
47  ATH_CHECK(m_inSegmentKeys.initialize());
48  if (m_isMC) {
49  for (const auto& key : m_inSegmentKeys) {
50  m_truthDecorKeys.emplace_back(key, "truthParticleLink");
51  }
52  }
53  ATH_CHECK(m_truthDecorKeys.initialize());
54  ATH_CHECK(m_idHelperSvc.retrieve());
56  m_tree.addBranch(std::make_shared<MuonVal::EventHashBranch>(m_tree.tree()));
57  ATH_CHECK(m_visionTool.retrieve(EnableTool{!m_visionTool.empty()}));
58  if (m_visionTool.empty()) {
60  }
61  ATH_CHECK(m_tree.init(this));
62  ATH_CHECK(m_idHelperSvc.retrieve());
63  ATH_MSG_DEBUG("Successfully initialized");
64 
65  return StatusCode::SUCCESS;
66  }
67 
70  return StatusCode::SUCCESS;
71  }
72 
74  const EventContext& ctx{Gaudi::Hive::currentContext()};
76  ATH_CHECK(emptyKey.initialize(SG::AllowEmpty));
77  for (unsigned keyNum = 0 ; keyNum < m_spacePointKeys.size(); ++keyNum) {
79  keyNum < m_inSegmentKeys.size() ? m_inSegmentKeys[keyNum] : emptyKey ));
80  }
81  return StatusCode::SUCCESS;
82  }
83  StatusCode BucketDumperAlg::dumpContainer(const EventContext& ctx,
84  const SG::ReadHandleKey<SpacePointContainer>& spacePointKey,
86 
87  using SegmentsPerBucket_t = std::unordered_map <const SpacePointBucket*,
88  std::set<const xAOD::MuonSegment*, LocalSegSorter>>;
89 
90  SegmentsPerBucket_t segmentMap{};
91 
92  const xAOD::MuonSegmentContainer* readSegment{nullptr};
93  ATH_CHECK(SG::get(readSegment, segmentKey, ctx));
94  if (readSegment) {
95  for (const xAOD::MuonSegment* segment : *readSegment) {
96  segmentMap[detailedSegment(*segment)->parent()->parentBucket()].insert(segment);
97  }
98  }
99 
100  const ActsGeometryContext* gctx{nullptr};
101  ATH_CHECK(SG::get(gctx, m_geoCtxKey, ctx));
102 
103  const SpacePointContainer* spContainer{nullptr};
104  ATH_CHECK(SG::get(spContainer, spacePointKey, ctx));
105 
106  CLHEP::HepRandomEngine* rndEngine = getRandomEngine(ctx);
107 
108  const SpacePointPerLayerSorter layerSorter{};
109 
110  for(const SpacePointBucket* bucket : *spContainer) {
112  if (!m_isMC && segmentMap[bucket].empty() && m_fracToKeep < 1. &&
113  CLHEP::RandFlat::shoot(rndEngine,0.,1.) > m_fracToKeep) {
114  ATH_MSG_VERBOSE("Skipping bucket without segment");
115  continue;
116  }
118  m_bucket_sector = bucket->msSector()->sector();
119  m_bucket_chamberIdx = static_cast<uint8_t>(bucket->msSector()->chamberIndex());
120  m_bucket_side = bucket->msSector()->side();
122  m_bucket_min = bucket->coveredMin();
123  m_bucket_max = bucket->coveredMax();
124 
126  const Amg::Vector3D bucketPos = bucket->msSector()->localToGlobalTrans(*gctx) *
127  (0.5*(bucket->coveredMin() + bucket->coveredMax()) * Amg::Vector3D::UnitY());
128  m_bucket_posX = bucketPos.x();
129  m_bucket_posY = bucketPos.y();
130  m_bucket_posZ = bucketPos.z();
131 
133  m_bucket_truthHit = std::ranges::any_of(*bucket,[this](const SpacePointBucket::value_type & sp){
134  return m_visionTool->isLabeled(*sp);
135  });
136 
138  m_bucket_segments = segmentMap[bucket].size();
139 
140 
141 
142  std::unordered_map<const SpacePoint*, std::vector<int16_t>> spacePointToSegment{};
143  std::set<const xAOD::MuonSegment*, LocalSegSorter> truthSegments{};
145  auto match_itr = segmentMap.find(bucket);
146  if (match_itr != segmentMap.end()) {
147  for (const xAOD::MuonSegment* segment : match_itr->second) {
148  for (const auto& meas : detailedSegment(*segment)->measurements()) {
149  if (meas->fitState() == CalibratedSpacePoint::State::Valid) {
150  spacePointToSegment[meas->spacePoint()].push_back(segment->index());
151  }
152  }
153  using namespace SegmentFit;
154  const auto pars = localSegmentPars(*segment);
155  m_segmentLocX += pars[Acts::toUnderlying(ParamDefs::x0)];
156  m_segmentLocY += pars[Acts::toUnderlying(ParamDefs::y0)];
157  m_segmentLocTheta += pars[Acts::toUnderlying(ParamDefs::theta)];
158  m_segmentLocPhi += pars[Acts::toUnderlying(ParamDefs::phi)];
159 
161  unsigned truthLink = -1;
162  if (const xAOD::TruthParticle* truthPart = getTruthMatchedParticle(*segment)) {
163  truthLink = truthPart->index();
164  }
166  if (const xAOD::MuonSegment* truthSeg = getMatchedTruthSegment(*segment)) {
167  truthSegments.insert(truthSeg);
168  }
169  m_segmentTruthIdx+=truthLink;
170  m_segmentPos.push_back(segment->position());
171  m_segmentDir.push_back(segment->direction());
172  m_segment_chiSquared.push_back(segment->chiSquared());
173  m_segment_numberDoF.push_back(segment->numberDoF());
174  }
175  }
176 
177  std::vector<unsigned int> layNumbers{};
178  std::unordered_map<const SpacePoint*, std::vector<const xAOD::MuonSegment*>> spToTrueSeg{};
179  if (m_isMC) {
180  using SegLinkVec_t = std::vector<ElementLink<xAOD::MuonSegmentContainer>>;
181  static const SG::ConstAccessor<SegLinkVec_t> segAcc{"truthSegmentLinks"};
182  for (const auto& sp : *bucket){
183  for (const auto& link : segAcc(*sp->primaryMeasurement())) {
184  spToTrueSeg[sp.get()].push_back(*link);
185  truthSegments.insert(*link);
186  }
187  }
188  }
189 
190  for(const SpacePointBucket::value_type& sp : *bucket) {
192  const unsigned int layNum = layerSorter.sectorLayerNum(*sp);
193  if (std::find(layNumbers.begin(), layNumbers.end(), layNum) == layNumbers.end()) {
194  layNumbers.push_back(layNum);
195  }
196  const unsigned layer = layNumbers.size()-1;
197 
198  const Identifier& id = sp->identify();
199 
200  if (sp->type() == xAOD::UncalibMeasType::MdtDriftCircleType) {
201  const auto* dc = static_cast<const xAOD::MdtDriftCircle*>(sp->primaryMeasurement());
203  continue;
204  }
207  m_spoint_adc.push_back(dc->adc());
208  m_spoint_tdc.push_back(dc->tdc());
209  } else {
210  // check the technology to fill channel, adc and tdc... pushing back 0 for now
213  m_spoint_isMdt.push_back(false);
215  }
216 
218 
219 
220  const std::vector<int16_t>& segIdxs = spacePointToSegment[sp.get()];
221  m_spoint_mat[m_spoint_mat.size()] = segIdxs;
222  auto& trueSegLinks = m_spoint_trueSeg[m_spoint_trueSeg.size()];
223  for (const xAOD::MuonSegment* matchedSeg : spToTrueSeg[sp.get()]) {
224  trueSegLinks.push_back(std::distance(truthSegments.begin(), truthSegments.find(matchedSeg)));
225  }
226  m_spoint_nSegments.push_back(segIdxs.size());
227 
228  m_bucket_spacePoints = bucket->size();
229  m_spoint_localPosition.push_back(sp->localPosition());
230  using CovIdx = SpacePoint::CovIdx;
231  m_spoint_covX.push_back(sp->covariance()[Acts::toUnderlying(CovIdx::phiCov)]);
232  m_spoint_covY.push_back(sp->covariance()[Acts::toUnderlying(CovIdx::etaCov)]);
233  m_spoint_driftR.push_back(sp->driftRadius());
234  m_spoint_measuresEta.push_back(sp->measuresEta());
235  m_spoint_measuresPhi.push_back(sp->measuresPhi());
236  m_spoint_nEtaInstances.push_back(sp->nEtaInstanceCounts());
237  m_spoint_nPhiInstances.push_back(sp->nPhiInstanceCounts());
238  m_spoint_dimension.push_back(sp->dimension());
240  if (m_visionTool.isEnabled()) {
241  m_spoint_trueLabel.push_back(m_visionTool->isLabeled(*sp));
242  }
243 
244  Amg::Vector3D globalPos = sp->msSector()->localToGlobalTrans(*gctx) * sp->localPosition();
245  m_spoint_globalPosition.push_back( globalPos );
246  }
247 
248  for (const xAOD::MuonSegment* truthSeg: truthSegments) {
249  using namespace SegmentFit;
250  const auto truthPars = localSegmentPars(*truthSeg);
251  m_truthSegLocX += truthPars[Acts::toUnderlying(ParamDefs::x0)];
252  m_truthSegLocY += truthPars[Acts::toUnderlying(ParamDefs::y0)];
253  m_truthSegLocTheta += truthPars[Acts::toUnderlying(ParamDefs::theta)];
254  m_truthSegLocPhi += truthPars[Acts::toUnderlying(ParamDefs::phi)];
255  }
256 
257  m_bucket_layers = layNumbers.size();
258 
259  if (!m_tree.fill(ctx)) {
260  return StatusCode::FAILURE;
261  }
262  }
263 
264  return StatusCode::SUCCESS;
265 
266  }
267 
268  CLHEP::HepRandomEngine* BucketDumperAlg::getRandomEngine(const EventContext&ctx) const {
269  ATHRNG::RNGWrapper* rngWrapper = m_rndmSvc->getEngine(this, m_streamName);
270  std::string rngName = m_streamName;
271  rngWrapper->setSeed(rngName, ctx);
272  return rngWrapper->getEngine(ctx);
273  }
274 
275 }
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
ATHRNG::RNGWrapper::setSeed
void setSeed(const std::string &algName, const EventContext &ctx)
Set the random seed using a string (e.g.
Definition: RNGWrapper.h:169
MuonR4::SegmentSeed::parentBucket
const SpacePointBucket * parentBucket() const
Returns the bucket out of which the seed was formed.
Definition: SegmentSeed.cxx:39
MuonSimHitHelpers.h
MuonR4::BucketDumperAlg::m_spoint_dimension
MuonVal::VectorBranch< unsigned int > & m_spoint_dimension
Definition: BucketDumperAlg.h:103
UtilFunctions.h
MuonR4::BucketDumperAlg::m_segmentLocY
MuonVal::VectorBranch< float > & m_segmentLocY
Definition: BucketDumperAlg.h:112
MuonR4::SegmentFit
Definition: MuonHoughDefs.h:33
MuonR4::BucketDumperAlg::m_truthSegLocTheta
MuonVal::VectorBranch< float > & m_truthSegLocTheta
Definition: BucketDumperAlg.h:125
MuonR4::BucketDumperAlg::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const EventContext &ctx) const
Definition: BucketDumperAlg.cxx:268
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
MuonR4::SpacePointBucket
: The muon space point bucket represents a collection of points that will bre processed together in t...
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePointContainer.h:21
MuonR4::getTruthMatchedParticle
const xAOD::TruthParticle * getTruthMatchedParticle(const xAOD::MuonSegment &segment)
Returns the particle truth-matched to the segment.
Definition: MuonSimHitHelpers.cxx:100
MuonVal::MuonTesterTree::init
StatusCode init(OWNER *instance)
Initialize method.
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
MuonR4::BucketDumperAlg::m_spoint_adc
MuonVal::VectorBranch< uint16_t > & m_spoint_adc
Definition: BucketDumperAlg.h:91
MuonR4::BucketDumperAlg::m_bucket_max
MuonVal::ScalarBranch< float > & m_bucket_max
Definition: BucketDumperAlg.h:70
MuonR4::SpacePointPerLayerSorter
The SpacePointPerLayerSorter sort two given space points by their layer Identifier.
Definition: SpacePointPerLayerSorter.h:15
MuonR4::BucketDumperAlg::m_tree
MuonVal::MuonTesterTree m_tree
Definition: BucketDumperAlg.h:67
MuonR4::BucketDumperAlg::execute
virtual StatusCode execute() override final
Definition: BucketDumperAlg.cxx:73
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
MuonR4::BucketDumperAlg::m_spoint_id
MuonVal::MuonIdentifierBranch m_spoint_id
Definition: BucketDumperAlg.h:86
MuonR4::Segment::measurements
const MeasVec & measurements() const
Returns the associated measurements.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:49
MuonR4::BucketDumperAlg::m_bucket_truthHit
MuonVal::ScalarBranch< uint8_t > & m_bucket_truthHit
Definition: BucketDumperAlg.h:74
xAOD::MuonSegment_v1
Class describing a MuonSegment.
Definition: MuonSegment_v1.h:33
MuonR4::getMatchedTruthSegment
const xAOD::MuonSegment * getMatchedTruthSegment(const xAOD::MuonSegment &segment)
Returns the truth-matched segment.
Definition: MuonSimHitHelpers.cxx:111
MuonR4::BucketDumperAlg::m_segmentTruthIdx
MuonVal::VectorBranch< uint16_t > & m_segmentTruthIdx
Definition: BucketDumperAlg.h:116
MuonR4::BucketDumperAlg::m_spoint_globalPosition
MuonVal::ThreeVectorBranch m_spoint_globalPosition
Definition: BucketDumperAlg.h:84
MuonR4::BucketDumperAlg::m_spacePointKeys
SG::ReadHandleKeyArray< SpacePointContainer > m_spacePointKeys
Definition: BucketDumperAlg.h:49
MuonR4::BucketDumperAlg::finalize
virtual StatusCode finalize() override final
Definition: BucketDumperAlg.cxx:68
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::ReadHandleKey< xAOD::MuonSegmentContainer >
MuonR4::BucketDumperAlg::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: BucketDumperAlg.h:56
EventHashBranch.h
MuonR4::SpacePoint::CovIdx::etaCov
@ etaCov
MuonR4::BucketDumperAlg::m_bucket_min
MuonVal::ScalarBranch< float > & m_bucket_min
Definition: BucketDumperAlg.h:69
MuonR4::BucketDumperAlg::m_spoint_nPhiInstances
MuonVal::VectorBranch< unsigned int > & m_spoint_nPhiInstances
Definition: BucketDumperAlg.h:102
MuonR4::BucketDumperAlg::m_truthSegLocY
MuonVal::VectorBranch< float > & m_truthSegLocY
Definition: BucketDumperAlg.h:124
MuonR4::BucketDumperAlg::m_inSegmentKeys
SG::ReadHandleKeyArray< xAOD::MuonSegmentContainer > m_inSegmentKeys
Definition: BucketDumperAlg.h:53
Muon::MdtStatusDriftTime
@ MdtStatusDriftTime
The tube produced a vaild measurement.
Definition: MdtDriftCircleStatus.h:34
MuonR4::BucketDumperAlg::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: BucketDumperAlg.h:61
MuonR4::BucketDumperAlg::m_segmentPos
MuonVal::ThreeVectorBranch m_segmentPos
Definition: BucketDumperAlg.h:118
MuonR4::detailedSegment
const Segment * detailedSegment(const xAOD::MuonSegment &seg)
Helper function to navigate from the xAOD::MuonSegment to the MuonR4::Segment.
Definition: TrackingHelpers.cxx:7
MuonR4::BucketDumperAlg::m_spoint_covY
MuonVal::VectorBranch< float > & m_spoint_covY
Definition: BucketDumperAlg.h:95
MuonR4::BucketDumperAlg::m_bucket_layers
MuonVal::ScalarBranch< uint16_t > & m_bucket_layers
Definition: BucketDumperAlg.h:73
MuonR4::BucketDumperAlg::m_spoint_measuresPhi
MuonVal::VectorBranch< unsigned short > & m_spoint_measuresPhi
Definition: BucketDumperAlg.h:99
MuonR4::BucketDumperAlg::m_segmentLocX
MuonVal::VectorBranch< float > & m_segmentLocX
Definition: BucketDumperAlg.h:111
MuonVal::ThreeVectorBranch::push_back
void push_back(const Amg::Vector3D &vec)
interface using the Amg::Vector3D
Definition: ThreeVectorBranch.cxx:23
MuonVal::MatrixBranch::push_back
void push_back(size_t i, const T &value)
MuonR4::BucketDumperAlg::m_spoint_localPosition
MuonVal::ThreeVectorBranch m_spoint_localPosition
Definition: BucketDumperAlg.h:83
MuonR4::BucketDumperAlg::m_segmentLocTheta
MuonVal::VectorBranch< float > & m_segmentLocTheta
Definition: BucketDumperAlg.h:113
MuonR4::BucketDumperAlg::m_isMC
Gaudi::Property< bool > m_isMC
Definition: BucketDumperAlg.h:58
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition: ReadCondHandle.h:287
MuonR4::BucketDumperAlg::m_bucket_posZ
MuonVal::ScalarBranch< float > & m_bucket_posZ
Definition: BucketDumperAlg.h:77
MuonVal::MuonTesterTree::disableBranch
void disableBranch(const std::string &br_name)
Skips the branch from being added to the tree.
Definition: MuonTesterTree.cxx:199
MuonR4::Segment::parent
const SegmentSeed * parent() const
Returns the seed out of which the segment was built.
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonPatternEvent/MuonPatternEvent/Segment.h:51
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
MuonR4::BucketDumperAlg::m_fracToKeep
Gaudi::Property< double > m_fracToKeep
Definition: BucketDumperAlg.h:59
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
MuonVal::MuonIdentifierBranch::push_back
virtual void push_back(const Identifier &id)
Definition: IdentifierBranch.cxx:14
MuonR4::BucketDumperAlg::m_spoint_isStrip
MuonVal::VectorBranch< unsigned short > & m_spoint_isStrip
Definition: BucketDumperAlg.h:88
MuonR4::BucketDumperAlg::m_segmentLocPhi
MuonVal::VectorBranch< float > & m_segmentLocPhi
Definition: BucketDumperAlg.h:114
MuonR4::BucketDumperAlg::m_spoint_isMdt
MuonVal::VectorBranch< unsigned short > & m_spoint_isMdt
Definition: BucketDumperAlg.h:89
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
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
MuonR4::BucketDumperAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: BucketDumperAlg.h:51
MuonR4::BucketDumperAlg::m_spoint_measuresEta
MuonVal::VectorBranch< unsigned short > & m_spoint_measuresEta
Definition: BucketDumperAlg.h:98
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
MuonR4::BucketDumperAlg::m_spoint_mat
MuonVal::MatrixBranch< int16_t > & m_spoint_mat
Definition: BucketDumperAlg.h:106
MuonR4::BucketDumperAlg::m_spoint_trueLabel
MuonVal::VectorBranch< unsigned short > & m_spoint_trueLabel
Definition: BucketDumperAlg.h:100
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonVal::MuonTesterBranch::name
std::string name() const override final
Returns the name of the branch.
Definition: MuonTesterBranch.cxx:51
MuonR4::BucketDumperAlg::m_bucket_side
MuonVal::ScalarBranch< Char_t > & m_bucket_side
Definition: BucketDumperAlg.h:81
MuonR4::BucketDumperAlg::m_spoint_driftR
MuonVal::VectorBranch< float > & m_spoint_driftR
Definition: BucketDumperAlg.h:96
MdtDriftCircle.h
MuonVal::VectorBranch::push_back
void push_back(const T &value)
Adds a new element at the end of the vector.
MuonR4::CalibratedSpacePoint::State::Valid
@ Valid
TrackingHelpers.h
MuonR4::BucketDumperAlg::dumpContainer
StatusCode dumpContainer(const EventContext &ctx, const SG::ReadHandleKey< SpacePointContainer > &spacePointKey, const SG::ReadHandleKey< xAOD::MuonSegmentContainer > &segmentKey)
Dumps the space point container with the associated muon segment container.
Definition: BucketDumperAlg.cxx:83
MuonR4::BucketDumperAlg::initialize
virtual StatusCode initialize() override final
Definition: BucketDumperAlg.cxx:45
MuonR4::BucketDumperAlg::m_spoint_layer
MuonVal::VectorBranch< uint16_t > & m_spoint_layer
Definition: BucketDumperAlg.h:87
ATHRNG::RNGWrapper
A wrapper class for event-slot-local random engines.
Definition: RNGWrapper.h:56
MuonR4::SpacePoint::CovIdx::phiCov
@ phiCov
MuonR4::BucketDumperAlg::m_bucket_sector
MuonVal::ScalarBranch< uint8_t > & m_bucket_sector
Definition: BucketDumperAlg.h:79
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
MuonR4::BucketDumperAlg::m_bucket_posX
MuonVal::ScalarBranch< float > & m_bucket_posX
Definition: BucketDumperAlg.h:75
MuonR4::BucketDumperAlg::m_spoint_tdc
MuonVal::VectorBranch< uint16_t > & m_spoint_tdc
Definition: BucketDumperAlg.h:92
BucketDumperAlg.h
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
MuonR4::BucketDumperAlg::m_bucket_spacePoints
MuonVal::ScalarBranch< uint16_t > & m_bucket_spacePoints
Definition: BucketDumperAlg.h:71
MuonR4::BucketDumperAlg::m_bucket_segments
MuonVal::ScalarBranch< uint16_t > & m_bucket_segments
Definition: BucketDumperAlg.h:72
ATHRNG::RNGWrapper::getEngine
CLHEP::HepRandomEngine * getEngine(const EventContext &ctx) const
Retrieve the random engine corresponding to the provided EventContext.
Definition: RNGWrapper.h:134
RNGWrapper.h
MuonR4
This header ties the generic definitions in this package.
Definition: HoughEventData.h:16
MuonR4::SegLinkVec_t
std::vector< SegLink_t > SegLinkVec_t
Definition: MeasurementMarkerAlg.cxx:15
a
TList * a
Definition: liststreamerinfos.cxx:10
SegmentFitterEventData.h
MuonR4::BucketDumperAlg::m_segment_numberDoF
MuonVal::VectorBranch< float > & m_segment_numberDoF
Definition: BucketDumperAlg.h:121
MuonVal::MuonTesterTree::fill
bool fill(const EventContext &ctx)
Fills the tree per call.
Definition: MuonTesterTree.cxx:89
MuonR4::BucketDumperAlg::m_segment_chiSquared
MuonVal::VectorBranch< float > & m_segment_chiSquared
Definition: BucketDumperAlg.h:120
MuonVal::MuonTesterTree::write
StatusCode write()
Finally write the TTree objects.
Definition: MuonTesterTree.cxx:178
MuonR4::SegmentFit::localSegmentPars
Parameters localSegmentPars(const xAOD::MuonSegment &seg)
Returns the localSegPars decoration from a xAODMuon::Segment.
Definition: SegmentFitterEventData.cxx:33
MuonR4::BucketDumperAlg::m_visionTool
ToolHandle< MuonValR4::IPatternVisualizationTool > m_visionTool
Pattern visualization tool.
Definition: BucketDumperAlg.h:64
MuonR4::BucketDumperAlg::m_truthSegLocX
MuonVal::VectorBranch< float > & m_truthSegLocX
Definition: BucketDumperAlg.h:123
MuonR4::BucketDumperAlg::m_bucket_posY
MuonVal::ScalarBranch< float > & m_bucket_posY
Definition: BucketDumperAlg.h:76
MuonVal::VectorBranch::size
size_t size() const
Returns the number of actual saved elements.
MuonR4::SpacePoint::CovIdx
CovIdx
Definition: MuonSpectrometer/MuonPhaseII/Event/MuonSpacePoint/MuonSpacePoint/SpacePoint.h:30
MuonR4::BucketDumperAlg::m_streamName
Gaudi::Property< std::string > m_streamName
Definition: BucketDumperAlg.h:60
ReadHandle.h
Handle class for reading from StoreGate.
xAOD::MdtDriftCircle_v1
https://gitlab.cern.ch/atlas/athena/-/blob/master/MuonSpectrometer/MuonReconstruction/MuonRecEvent/Mu...
Definition: MdtDriftCircle_v1.h:21
columnar::operator()
decltype(auto) operator()(ObjectId< CI, CM > id) const noexcept
Definition: ColumnAccessor.h:173
MuonR4::BucketDumperAlg::m_truthDecorKeys
SG::ReadDecorHandleKeyArray< xAOD::MuonSegmentContainer > m_truthDecorKeys
Definition: BucketDumperAlg.h:55
MuonR4::BucketDumperAlg::m_spoint_trueSeg
MuonVal::MatrixBranch< int16_t > & m_spoint_trueSeg
Definition: BucketDumperAlg.h:107
MuonR4::BucketDumperAlg::m_truthSegLocPhi
MuonVal::VectorBranch< float > & m_truthSegLocPhi
Definition: BucketDumperAlg.h:126
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
MuonR4::BucketDumperAlg::m_segmentDir
MuonVal::ThreeVectorBranch m_segmentDir
Definition: BucketDumperAlg.h:119
MuonR4::BucketDumperAlg::m_spoint_nEtaInstances
MuonVal::VectorBranch< unsigned int > & m_spoint_nEtaInstances
Definition: BucketDumperAlg.h:101
MuonR4::BucketDumperAlg::m_spoint_covX
MuonVal::VectorBranch< float > & m_spoint_covX
Definition: BucketDumperAlg.h:94
MuonVal::MuonTesterTree::tree
TTree * tree()
TTree object.
Definition: MuonTesterTree.cxx:22
xAOD::UncalibMeasType::MdtDriftCircleType
@ MdtDriftCircleType
SpacePointPerLayerSorter.h
MuonR4::BucketDumperAlg::m_spoint_nSegments
MuonVal::VectorBranch< uint16_t > & m_spoint_nSegments
Definition: BucketDumperAlg.h:105
MuonR4::BucketDumperAlg::m_bucket_chamberIdx
MuonVal::ScalarBranch< uint8_t > & m_bucket_chamberIdx
Definition: BucketDumperAlg.h:80
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
MuonVal::MuonTesterTree::addBranch
bool addBranch(std::shared_ptr< IMuonTesterBranch > branch)
Branch is added to the tree without transferring the ownership.
Definition: MuonTesterTree.cxx:61
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
Identifier
Definition: IdentifierFieldParser.cxx:14