ATLAS Offline Software
Loading...
Searching...
No Matches
MuonHoughTransformTester.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef MUONVALR4_MuonHoughTransformTester_H
6#define MUONVALR4_MuonHoughTransformTester_H
7
8// Framework includes
10
12
13// EDM includes
16
19
20// muon includes
22
28
29
33
34
35namespace MuonValR4{
36
38 public:
40 virtual ~MuonHoughTransformTester() = default;
41
42 virtual StatusCode initialize() override;
43 virtual StatusCode execute() override;
44 virtual StatusCode finalize() override;
45
46 using TruthHitCol = std::unordered_set<const xAOD::MuonSimHit*>;
47
54 std::vector<const MuonR4::Segment*> matchedSegments;
56 std::vector<const MuonR4::SegmentSeed*> matchedSeeds;
57 std::vector<char> matchedSeedFoundSegment;
58 };
59
60 private:
61 std::vector<ObjectMatching> matchWithTruth(const ActsTrk::GeometryContext& gctx,
62 const xAOD::MuonSegmentContainer* truthSegments,
63 const MuonR4::SegmentSeedContainer* seedContainer,
64 const MuonR4::SegmentContainer* segmentContainer) const;
70 unsigned int countOnSameSide(const ActsTrk::GeometryContext& gctx,
71 const xAOD::MuonSegment& truthSeg,
72 const MuonR4::Segment& recoSeg) const;
73
81 const xAOD::MuonSegment* truthSegment);
83 void fillBucketInfo(const MuonR4::SpacePointBucket& bucket);
84
87 void fillSeedInfo(const ObjectMatching& obj);
90 void fillSegmentInfo(const ActsTrk::GeometryContext& gctx, const ObjectMatching& obj);
91
92
93
94 // // output tree - allows to compare the sim and fast-digitised hits
95 MuonVal::MuonTesterTree m_tree{"MuonEtaHoughTest","MuonEtaHoughTransformTest"};
96
97 // MDT sim hits in xAOD format
98 SG::ReadHandleKey<xAOD::MuonSegmentContainer> m_truthSegmentKey {this, "TruthSegmentKey","MuonTruthSegments", "truth segment container"};
99
100 SG::ReadHandleKeyArray<MuonR4::SegmentSeedContainer> m_inHoughSegmentSeedKeys{this, "SegmentSeedKeys", {"MuonHoughStationSegmentSeeds"}};
102
103
104 SG::ReadHandleKey<MuonR4::SpacePointContainer> m_spKey{this, "SpacePointKey", "MuonSpacePoints"};
105 SG::ReadHandleKey<ActsTrk::GeometryContext> m_geoCtxKey{this, "AlignmentKey", "ActsAlignment", "cond handle key"};
106
107 ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
108
109
110 Gaudi::Property<bool> m_isMC{this, "isMC", false, "Toggle whether the job is ran on MC or not"};
111
112 Gaudi::Property<bool> m_writeSpacePoints{this, "writeSpacePoints", false,
113 "Toggle whether the particular space poitns shall be written"};
114
116
118 MuonVal::ScalarBranch<int>& m_out_chamberIndex{m_tree.newScalar<int>("chamberIndex")};
120 MuonVal::ScalarBranch<short>& m_out_stationSide{m_tree.newScalar<short>("stationSide")};
122 MuonVal::ScalarBranch<int>& m_out_stationPhi{m_tree.newScalar<int>("stationPhi")};
123
124 MuonVal::ScalarBranch<float>& m_out_bucketStart{m_tree.newScalar<float>("bucketStart", 1)};
125 MuonVal::ScalarBranch<float>& m_out_bucketEnd{m_tree.newScalar<float>("bucketEnd", -1)};
126
128 std::shared_ptr<SpacePointTesterModule> m_spTester{};
130 MuonVal::MatrixBranch<unsigned char>& m_spMatchedToPattern{m_tree.newMatrix<unsigned char>("seedMatchedSp")};
132 MuonVal::MatrixBranch<unsigned char>& m_spMatchedToSegment{m_tree.newMatrix<unsigned char>("segmentMatchedSp")};
133
135 MuonVal::ScalarBranch<unsigned char>& m_out_nSpacePoints{m_tree.newScalar<unsigned char>("bucketNHits",0)};
137 MuonVal::ScalarBranch<unsigned char>& m_out_nPrecSpacePoints{m_tree.newScalar<unsigned char>("bucketNPrecMeas",0)};
139 MuonVal::ScalarBranch<unsigned char>& m_out_nPhiSpacePoints{m_tree.newScalar<unsigned char>("bucketNPhiMeass",0)};
140
142 MuonVal::ScalarBranch<unsigned char>& m_out_nTrueSpacePoints{m_tree.newScalar<unsigned char>("bucketNTrueMeas",0)};
144 MuonVal::ScalarBranch<unsigned char>& m_out_nTruePrecSpacePoints{m_tree.newScalar<unsigned char>("bucketNTruePrecMeas",0)};
146 MuonVal::ScalarBranch<unsigned char>& m_out_nTruePhiSpacePoints{m_tree.newScalar<unsigned char>("bucketNTruePhiMeass",0)};
147
149
151 MuonVal::ScalarBranch<bool> & m_out_hasTruth{m_tree.newScalar<bool>("hasTruth",false)};
152
154 MuonVal::ScalarBranch<float>& m_out_gen_Eta{m_tree.newScalar<float>("genEta",-10.)};
155 MuonVal::ScalarBranch<float>& m_out_gen_Phi{m_tree.newScalar<float>("genPhi",-10.)};
156 MuonVal::ScalarBranch<float>& m_out_gen_Pt{m_tree.newScalar<float>("genPt",-10.)};
157 MuonVal::ScalarBranch<short>& m_out_gen_Q{m_tree.newScalar<short>("genQ", 0)};
159 MuonVal::ScalarBranch<float>& m_out_gen_y0{m_tree.newScalar<float>("genY0", 0.0)};
160 MuonVal::ScalarBranch<float>& m_out_gen_tantheta{m_tree.newScalar<float>("genTanTheta", 0.0)};
161 MuonVal::ScalarBranch<float>& m_out_gen_tanphi{m_tree.newScalar<float>("genTanPhi", 0.0)};
162 MuonVal::ScalarBranch<float>& m_out_gen_x0{m_tree.newScalar<float>("genX0", 0.0)};
163 MuonVal::ScalarBranch<float>& m_out_gen_time{m_tree.newScalar<float>("genTime", 0.0)};
165 MuonVal::ScalarBranch<unsigned short>& m_out_gen_nHits{m_tree.newScalar<unsigned short>("genNHits",0)};
166 MuonVal::ScalarBranch<unsigned short>& m_out_gen_nRPCHits{m_tree.newScalar<unsigned short>("genNRpcHits",0)};
167 MuonVal::ScalarBranch<unsigned short>& m_out_gen_nMDTHits{m_tree.newScalar<unsigned short>("genNMdtHits",0)};
168 MuonVal::ScalarBranch<unsigned short>& m_out_gen_nTGCHits{m_tree.newScalar<unsigned short>("genNTgcHits",0)};
169 MuonVal::ScalarBranch<unsigned short>& m_out_gen_nNswHits{m_tree.newScalar<unsigned short>("genNNswHits",0)};
170 // truth segment size in the y direction
171 MuonVal::ScalarBranch<float>& m_out_gen_minYhit{m_tree.newScalar<float>("genMinYhit", 1.0)};
172 MuonVal::ScalarBranch<float>& m_out_gen_maxYhit{m_tree.newScalar<float>("genMaxYhit", -1.0)};
173
176 MuonVal::ScalarBranch<unsigned>& m_out_seed_n{m_tree.newScalar<unsigned>("nSeeds", 0)};
177 // the following are filled with one entry per seed
178
179 // does the seed have a phi-extension?
180 MuonVal::VectorBranch<unsigned short>& m_out_seed_hasPhiExtension{m_tree.newVector<unsigned short>("seedHasPhiExtension", false)};
181 // fraction of the hits on the seed matched to truth
182 MuonVal::VectorBranch<unsigned short>& m_out_seed_nMatchedHits{m_tree.newVector<unsigned short>("seedTruthMatchedHits", false)};
183
184 // parameters of the seed
185 MuonVal::VectorBranch<float>& m_out_seed_y0{m_tree.newVector<float>("seedY0", 0.0)};
186 MuonVal::VectorBranch<float>& m_out_seed_x0{m_tree.newVector<float>("seedX0", 0.0)};
187 MuonVal::VectorBranch<float>& m_out_seed_tantheta{m_tree.newVector<float>("seedTanTheta", 0.0)};
188 MuonVal::VectorBranch<float>& m_out_seed_tanphi{m_tree.newVector<float>("seedTanPhi", 0.0)};
189
190 // seed size in the y direction
191 MuonVal::VectorBranch<float>& m_out_seed_minYhit{m_tree.newVector<float>("seedMinYhit", 1.0)};
192 MuonVal::VectorBranch<float>& m_out_seed_maxYhit{m_tree.newVector<float>("seedMaxYhit", -1.0)};
193 // hit counts on the seed
194 MuonVal::VectorBranch<unsigned short>& m_out_seed_nHits{m_tree.newVector<unsigned short>("seedNHits", 0)};
195 MuonVal::VectorBranch<unsigned short>& m_out_seed_nPrecHits{m_tree.newVector<unsigned short>("seedNPrecHits", 0)};
196 MuonVal::VectorBranch<unsigned short>& m_out_seed_nEtaHits{m_tree.newVector<unsigned short>("seedNEtaHits", 0)};
197 MuonVal::VectorBranch<unsigned short>& m_out_seed_nPhiHits{m_tree.newVector<unsigned short>("seedNPhiHits", 0)};
198
199 MuonVal::VectorBranch<unsigned short>& m_out_seed_nMdt{m_tree.newVector<unsigned short>("seedNMdtHits", 0)};
200 MuonVal::VectorBranch<unsigned short>& m_out_seed_nRpc{m_tree.newVector<unsigned short>("seedNRpcHits", 0)};
201 MuonVal::VectorBranch<unsigned short>& m_out_seed_nTgc{m_tree.newVector<unsigned short>("seedNTgcHits", 0)};
202 MuonVal::VectorBranch<unsigned short>& m_out_seed_nsTgc{m_tree.newVector<unsigned short>("seedNsTgcHits", 0)};
203 MuonVal::VectorBranch<unsigned short>& m_out_seed_nMm{m_tree.newVector<unsigned short>("seedNMmHits", 0)};
204
206 MuonVal::VectorBranch<unsigned short>& m_out_seed_nTrueHits{m_tree.newVector<unsigned short>("seedNTrueHits", 0)};
207 MuonVal::VectorBranch<unsigned short>& m_out_seed_nTruePrecHits{m_tree.newVector<unsigned short>("seedNTruePrecHits", 0)};
208 MuonVal::VectorBranch<unsigned short>& m_out_seed_nTruePhiHits{m_tree.newVector<unsigned short>("seedNTruePhiHits", 0)};
209 MuonVal::VectorBranch<unsigned short>& m_out_seed_nTrueEtaHits{m_tree.newVector<unsigned short>("seedNTrueEtaHits", 0)};
210
211 MuonVal::VectorBranch<unsigned char> & m_out_seed_ledToSegment{m_tree.newVector<unsigned char>("seedConvertedToSegment",false)};
212
214
215 // count of segments
216 MuonVal::ScalarBranch<unsigned>& m_out_segment_n{m_tree.newScalar<unsigned>("nSegments", 0)};
217 // the following are filled with one entry per segment
218
219 // fit metrics
220 MuonVal::VectorBranch<float>& m_out_segment_chi2{m_tree.newVector<float>("segmentChi2", -1.)};
221 MuonVal::VectorBranch<uint16_t>& m_out_segment_nDoF{m_tree.newVector<uint16_t>("segmentNdoF", 0)};
222 MuonVal::VectorBranch<bool>& m_out_segment_hasTimeFit {m_tree.newVector<bool>("segmentHasTimeFit", false)};
223 MuonVal::VectorBranch<uint16_t>& m_out_segment_fitIter {m_tree.newVector<uint16_t>("segmentFitIterations", 0)};
224
225 // presence of a phi extension
226 MuonVal::VectorBranch<bool>& m_out_segment_hasPhi {m_tree.newVector<bool>("segmentHasPhiHits", false)};
227
228 // segment parameters
229 MuonVal::VectorBranch<float>& m_out_segment_y0{m_tree.newVector<float>("segmentY0", 0.0)};
230 MuonVal::VectorBranch<float>& m_out_segment_x0{m_tree.newVector<float>("segmentX0", 0.0)};
231 MuonVal::VectorBranch<float>& m_out_segment_tantheta{m_tree.newVector<float>("segmentTanTheta", 0.0)};
232 MuonVal::VectorBranch<float>& m_out_segment_tanphi{m_tree.newVector<float>("segmentTanPhi", 0.0)};
233 MuonVal::VectorBranch<float>& m_out_segment_time{m_tree.newVector<float>("segmentTime", 0.)};
234
235 // segment uncertainties
236 MuonVal::VectorBranch<float>& m_out_segment_err_y0{m_tree.newVector<float>("segmentErrY0", -1.0)};
237 MuonVal::VectorBranch<float>& m_out_segment_err_x0{m_tree.newVector<float>("segmentErrX0", -1.0)};
238 MuonVal::VectorBranch<float>& m_out_segment_err_tantheta{m_tree.newVector<float>("segmentErrTanTheta", -1.0)};
239 MuonVal::VectorBranch<float>& m_out_segment_err_tanphi{m_tree.newVector<float>("segmentErrTanPhi", -1.0)};
240 MuonVal::VectorBranch<float>& m_out_segment_err_time{m_tree.newVector<float>("segmentErrTime", -1.0)};
241
242 // hit counts on segment
243 MuonVal::VectorBranch<unsigned short>& m_out_segment_truthMatchedHits{m_tree.newVector<unsigned short>("segmentTruthMatchedHits", 0)};
244 MuonVal::VectorBranch<unsigned short>& m_out_segment_nMdtHits{m_tree.newVector<unsigned short>("segmentNMdtHits", 0)};
245 MuonVal::VectorBranch<unsigned short>& m_out_segment_nRpcEtaHits{m_tree.newVector<unsigned short>("segmentNRpcEtaHits", 0)};
246 MuonVal::VectorBranch<unsigned short>& m_out_segment_nRpcPhiHits{m_tree.newVector<unsigned short>("segmentNRpcPhiHits", 0)};
247 MuonVal::VectorBranch<unsigned short>& m_out_segment_nTgcEtaHits{m_tree.newVector<unsigned short>("segmentNTgcEtaHits", 0)};
248 MuonVal::VectorBranch<unsigned short>& m_out_segment_nTgcPhiHits{m_tree.newVector<unsigned short>("segmentNTgcPhiHits", 0)};
249 // hit coutns on segment NSW
250 MuonVal::VectorBranch<unsigned short>& m_out_segment_nMmEtaHits{m_tree.newVector<unsigned short>("segmentNMmEtaHits", 0)};
251 MuonVal::VectorBranch<unsigned short>& m_out_segment_nMmStereoHits{m_tree.newVector<unsigned short>("segmentNMmStereoHits", 0)};
252 MuonVal::VectorBranch<unsigned short>& m_out_segment_nsTgcStripHits{m_tree.newVector<unsigned short>("segmentNsTgcStripHits", 0)};
253 MuonVal::VectorBranch<unsigned short>& m_out_segment_nsTgcWireHits{m_tree.newVector<unsigned short>("segmentNsTgcWireHits", 0)};
254 MuonVal::VectorBranch<unsigned short>& m_out_segment_nsTgcPadpHits{m_tree.newVector<unsigned short>("segmentNsTgcPadHits", 0)};
256 MuonVal::VectorBranch<unsigned short>& m_out_segment_nTrueHits{m_tree.newVector<unsigned short>("segmentNTrueHits", 0)};
257 MuonVal::VectorBranch<unsigned short>& m_out_segment_nTruePrecHits{m_tree.newVector<unsigned short>("segmentNTruePrecHits", 0)};
258 MuonVal::VectorBranch<unsigned short>& m_out_segment_nTruePhiHits{m_tree.newVector<unsigned short>("segmentNTruePhiHits", 0)};
259 MuonVal::VectorBranch<unsigned short>& m_out_segment_nTrueEtaHits{m_tree.newVector<unsigned short>("segmentNTrueEtaHits", 0)};
260
261 // segment size in the y direction
262 MuonVal::VectorBranch<float>& m_out_segment_minYhit{m_tree.newVector<float>("segmentMinYhit", 1.0)};
263 MuonVal::VectorBranch<float>& m_out_segment_maxYhit{m_tree.newVector<float>("segmentMaxYhit", -1.0)};
264
266 ToolHandle<MuonValR4::IPatternVisualizationTool> m_visionTool{this, "VisualizationTool", ""};
267
269
270 };
271}
272
273#endif // MUONFASTDIGITEST_MUONVALR4_MuonHoughTransformTester_H
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
A spectrometer sector forms the envelope of all chambers that are placed in the same MS sector & laye...
Placeholder for what will later be the muon segment EDM representation.
: The muon space point bucket represents a collection of points that will bre processed together in t...
std::vector< ObjectMatching > matchWithTruth(const ActsTrk::GeometryContext &gctx, const xAOD::MuonSegmentContainer *truthSegments, const MuonR4::SegmentSeedContainer *seedContainer, const MuonR4::SegmentContainer *segmentContainer) const
MuonVal::VectorBranch< unsigned short > & m_out_segment_nMmStereoHits
MuonVal::VectorBranch< unsigned short > & m_out_segment_nRpcPhiHits
MuonVal::ScalarBranch< float > & m_out_gen_Pt
MuonVal::ScalarBranch< unsigned char > & m_out_nTruePhiSpacePoints
Number of phi hits in the bucket.
MuonVal::VectorBranch< float > & m_out_seed_maxYhit
MuonVal::VectorBranch< unsigned short > & m_out_seed_nHits
ToolHandle< MuonValR4::IPatternVisualizationTool > m_visionTool
Pattern visualization tool.
SG::ReadHandleKeyArray< MuonR4::SegmentContainer > m_inSegmentKeys
MuonVal::ScalarBranch< unsigned > & m_out_segment_n
========== Segment block: Filled when we have one or multiple segments =============
MuonVal::VectorBranch< unsigned short > & m_out_seed_nMm
MuonVal::VectorBranch< float > & m_out_segment_err_y0
MuonVal::VectorBranch< float > & m_out_segment_err_tantheta
MuonVal::VectorBranch< unsigned char > & m_out_seed_ledToSegment
void fillSegmentInfo(const ActsTrk::GeometryContext &gctx, const ObjectMatching &obj)
Fill the info assciated to the segment.
MuonVal::VectorBranch< unsigned short > & m_out_seed_nTrueEtaHits
const MuonGMR4::MuonDetectorManager * m_detMgr
void fillTruthInfo(const ActsTrk::GeometryContext &gctx, const xAOD::MuonSegment *truthSegment)
Fill the associated truth information into the tree.
virtual ~MuonHoughTransformTester()=default
MuonVal::ScalarBranch< unsigned short > & m_out_gen_nHits
Truth - hit count summary.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
MuonVal::ScalarBranch< unsigned short > & m_out_gen_nMDTHits
MuonVal::VectorBranch< float > & m_out_seed_x0
MuonVal::VectorBranch< unsigned short > & m_out_segment_truthMatchedHits
SG::ReadHandleKey< MuonR4::SpacePointContainer > m_spKey
MuonVal::VectorBranch< unsigned short > & m_out_seed_nTruePrecHits
MuonVal::ScalarBranch< bool > & m_out_hasTruth
======= Truth block: Filled if we have a truth match. ============
MuonVal::VectorBranch< float > & m_out_seed_y0
MuonVal::ScalarBranch< unsigned char > & m_out_nPhiSpacePoints
Number of phi hits in the bucket.
MuonVal::VectorBranch< unsigned short > & m_out_seed_hasPhiExtension
MuonVal::MatrixBranch< unsigned char > & m_spMatchedToPattern
Branch indicating which space points in the tree are associated to the i-th pattern.
MuonVal::VectorBranch< unsigned short > & m_out_segment_nsTgcPadpHits
MuonVal::VectorBranch< unsigned short > & m_out_segment_nsTgcWireHits
MuonVal::ScalarBranch< int > & m_out_stationPhi
phi index of the station
MuonVal::VectorBranch< unsigned short > & m_out_segment_nsTgcStripHits
MuonVal::VectorBranch< unsigned short > & m_out_segment_nTruePrecHits
MuonVal::ScalarBranch< float > & m_out_bucketEnd
MuonVal::ScalarBranch< unsigned char > & m_out_nTrueSpacePoints
Number of all space points in the bucket.
MuonVal::VectorBranch< unsigned short > & m_out_seed_nEtaHits
void fillChamberInfo(const MuonGMR4::SpectrometerSector *chamber)
Fill the current chamber info into the output.
MuonVal::VectorBranch< unsigned short > & m_out_segment_nTgcPhiHits
MuonVal::ScalarBranch< unsigned short > & m_out_gen_nRPCHits
MuonVal::VectorBranch< float > & m_out_segment_time
void fillBucketInfo(const MuonR4::SpacePointBucket &bucket)
Fill the hit summary info of the associated bucket.
MuonVal::ScalarBranch< short > & m_out_gen_Q
MuonVal::MatrixBranch< unsigned char > & m_spMatchedToSegment
Branch indicating which space points in the tree are associated to the i-th segment.
MuonVal::ScalarBranch< float > & m_out_gen_y0
Truth - segment parameters.
MuonVal::ScalarBranch< unsigned char > & m_out_nPrecSpacePoints
Number of precision hits in the bucket.
MuonVal::VectorBranch< bool > & m_out_segment_hasPhi
MuonVal::ScalarBranch< unsigned char > & m_out_nTruePrecSpacePoints
Number of precision hits in the bucket.
MuonVal::VectorBranch< float > & m_out_seed_tanphi
MuonVal::VectorBranch< float > & m_out_segment_tanphi
MuonVal::VectorBranch< float > & m_out_segment_err_tanphi
unsigned int countOnSameSide(const ActsTrk::GeometryContext &gctx, const xAOD::MuonSegment &truthSeg, const MuonR4::Segment &recoSeg) const
Calculates how many measurements from the segment fit have the same drift sign as when evaluated with...
MuonVal::ScalarBranch< float > & m_out_gen_tanphi
MuonVal::ScalarBranch< unsigned > & m_out_seed_n
========== Seed block: Filled when we have one or multiple seeds ============= seed count
MuonVal::VectorBranch< float > & m_out_segment_chi2
MuonVal::VectorBranch< unsigned short > & m_out_segment_nTrueHits
Labelled hits from the pattern visualization tool.
MuonVal::VectorBranch< unsigned short > & m_out_seed_nTruePhiHits
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_truthSegmentKey
MuonVal::VectorBranch< float > & m_out_segment_tantheta
MuonVal::ScalarBranch< float > & m_out_gen_Phi
MuonVal::VectorBranch< unsigned short > & m_out_seed_nMdt
MuonVal::VectorBranch< float > & m_out_seed_minYhit
MuonVal::VectorBranch< unsigned short > & m_out_seed_nRpc
MuonVal::VectorBranch< unsigned short > & m_out_seed_nPrecHits
MuonVal::ScalarBranch< float > & m_out_gen_maxYhit
MuonVal::ScalarBranch< float > & m_out_gen_minYhit
MuonVal::VectorBranch< float > & m_out_segment_err_time
MuonVal::VectorBranch< float > & m_out_seed_tantheta
MuonVal::ScalarBranch< int > & m_out_chamberIndex
====== Common block: Filled for all entries ===========
MuonVal::ScalarBranch< unsigned char > & m_out_nSpacePoints
Number of all space points in the bucket.
MuonVal::VectorBranch< unsigned short > & m_out_segment_nTruePhiHits
std::unordered_set< const xAOD::MuonSimHit * > TruthHitCol
MuonVal::ScalarBranch< unsigned short > & m_out_gen_nNswHits
MuonVal::VectorBranch< float > & m_out_segment_minYhit
void fillSeedInfo(const ObjectMatching &obj)
Fill the info associated to the seed.
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
MuonVal::VectorBranch< float > & m_out_segment_x0
MuonVal::VectorBranch< unsigned short > & m_out_seed_nsTgc
MuonVal::ScalarBranch< float > & m_out_gen_Eta
global particle properties
MuonVal::VectorBranch< bool > & m_out_segment_hasTimeFit
MuonVal::VectorBranch< unsigned short > & m_out_segment_nTgcEtaHits
MuonVal::VectorBranch< unsigned short > & m_out_segment_nMmEtaHits
MuonVal::VectorBranch< float > & m_out_segment_maxYhit
MuonVal::VectorBranch< unsigned short > & m_out_seed_nTrueHits
Labelled hits from the pattern visualization tool.
MuonVal::ScalarBranch< float > & m_out_bucketStart
MuonVal::VectorBranch< unsigned short > & m_out_segment_nMdtHits
MuonVal::VectorBranch< unsigned short > & m_out_seed_nPhiHits
MuonVal::VectorBranch< unsigned short > & m_out_segment_nTrueEtaHits
SG::ReadHandleKeyArray< MuonR4::SegmentSeedContainer > m_inHoughSegmentSeedKeys
MuonVal::ScalarBranch< float > & m_out_gen_time
MuonVal::ScalarBranch< float > & m_out_gen_x0
MuonVal::VectorBranch< unsigned short > & m_out_segment_nRpcEtaHits
MuonVal::VectorBranch< float > & m_out_segment_err_x0
MuonVal::ScalarBranch< short > & m_out_stationSide
+1 for A-, -1 of C-side
MuonVal::VectorBranch< unsigned short > & m_out_seed_nMatchedHits
MuonVal::VectorBranch< uint16_t > & m_out_segment_nDoF
MuonVal::VectorBranch< uint16_t > & m_out_segment_fitIter
MuonVal::VectorBranch< float > & m_out_segment_y0
MuonVal::VectorBranch< unsigned short > & m_out_seed_nTgc
std::shared_ptr< SpacePointTesterModule > m_spTester
Branch dumping all the space points from the difference buckets.
MuonVal::ScalarBranch< float > & m_out_gen_tantheta
MuonVal::ScalarBranch< unsigned short > & m_out_gen_nTGCHits
SG::ReadHandleKey< ActsTrk::GeometryContext > m_geoCtxKey
Property holding a SG store/key/clid from which a ReadHandle is made.
DataVector< SegmentSeed > SegmentSeedContainer
DataVector< Segment > SegmentContainer
Lightweight algorithm to read xAOD MDT sim hits and (fast-digitised) drift circles from SG and fill a...
HandleKeyArray< ReadHandle< T >, ReadHandleKey< T >, Gaudi::DataHandle::Reader > ReadHandleKeyArray
MuonSegmentContainer_v1 MuonSegmentContainer
Definition of the current "MuonSegment container version".
MuonSegment_v1 MuonSegment
Reference the current persistent version:
const xAOD::MuonSegment * truthSegment
Truth segment for reference.
const MuonGMR4::SpectrometerSector * chamber
Associated chamber.
std::vector< const MuonR4::Segment * > matchedSegments
All segments matched to this object.
std::vector< const MuonR4::SegmentSeed * > matchedSeeds
All seeds matched to this object.