ATLAS Offline Software
MuonHoughTransformTester.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef MUONVALR4_MuonHoughTransformTester_H
6 #define MUONVALR4_MuonHoughTransformTester_H
7 
8 // Framework includes
13 
14 // EDM includes
22 
23 // muon includes
28 
29 #include "TCanvas.h"
33 
34 namespace MuonValR4{
35 
37  public:
38  MuonHoughTransformTester(const std::string& name, ISvcLocator* pSvcLocator);
39  virtual ~MuonHoughTransformTester() = default;
40 
41  virtual StatusCode initialize() override;
42  virtual StatusCode execute() override;
43  virtual StatusCode finalize() override;
44 
45  private:
47  const Identifier& hitId) const;
48  StatusCode drawEventDisplay(const EventContext& ctx,
49  const std::vector<const xAOD::MuonSimHit*>& simHits,
50  const MuonR4::HoughSegmentSeed* foundMax) const;
51 
52  StatusCode drawChi2(const EventContext& ctx,
53  const std::vector<const xAOD::MuonSimHit*>& simHits,
54  const MuonR4::HoughSegmentSeed* foundMax,
55  const MuonR4::MuonSegment* foundSegment,
56  const std::string & label) const;
57 
58  void fillMaximum(const MuonR4::HoughSegmentSeed* foundMax);
59 
60  StatusCode dumpUnMatched(const EventContext& ctx,
61  const MuonR4::StationHoughSegmentSeedContainer& seedContainer,
62  const std::set<const MuonR4::HoughSegmentSeed*>& matchedSeeds);
63 
64 
65 
66  // MDT sim hits in xAOD format
67  SG::ReadHandleKeyArray<xAOD::MuonSimHitContainer> m_inSimHitKeys {this, "SimHitKeys",{ "xMdtSimHits","xRpcSimHits","xTgcSimHits"}, "xAOD SimHit collections"};
68 
69  SG::ReadHandleKey<MuonR4::StationHoughSegmentSeedContainer> m_inHoughSegmentSeedKey{this, "StationHoughSegmentSeedContainer", "MuonHoughStationSegmentSeeds"};
70  SG::ReadHandleKey<MuonR4::MuonSegmentContainer> m_inSegmentKey{this, "MuonSegmentContainer", "R4MuonSegments"};
71  SG::ReadHandleKey<MuonR4::MuonSpacePointContainer> m_spacePointKey{this, "SpacePointContainer", "MuonSpacePoints"};
72 
73  SG::ReadHandleKey<ActsGeometryContext> m_geoCtxKey{this, "AlignmentKey", "ActsAlignment", "cond handle key"};
74 
75  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
77 
78  Gaudi::Property<bool> m_dumpUnmatchedSeeds{this, "UnMatchedSeeds", true,
79  "DumpsAll seeds that do not belong to a true muon"};
80  // // output tree - allows to compare the sim and fast-digitised hits
81  MuonVal::MuonTesterTree m_tree{"MuonEtaHoughTest","MuonEtaHoughTransformTest"};
94 
105 
114 
121 
122 
129 
135 
141 
147 
148 
156 
158  Gaudi::Property<bool> m_drawEvtDisplayFailure{this, "drawDisplayFailed", false};
160  Gaudi::Property<bool> m_drawEvtDisplaySuccess{this, "drawDisplaySuccss", false};
161 
162  std::unique_ptr<TCanvas> m_allCan{};
163  Gaudi::Property<std::string> m_allCanName{this, "AllCanvasName", "AllHoughiDiPuffDisplays.pdf"};
164 
165  };
166 }
167 
168 #endif // MUONFASTDIGITEST_MUONVALR4_MuonHoughTransformTester_H
ReadHandleKeyArray.h
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
MuonVal::TgcIdentifierBranch
Branch to store all information of the TgcIdentifier.
Definition: IdentifierBranch.h:83
MuonValR4::MuonHoughTransformTester::m_out_max_nEtaHits
MuonVal::ScalarBranch< unsigned int > & m_out_max_nEtaHits
Definition: MuonHoughTransformTester.h:107
MuonValR4::MuonHoughTransformTester::m_max_stgcHitErrorY
MuonVal::VectorBranch< float > & m_max_stgcHitErrorY
Definition: MuonHoughTransformTester.h:140
MuonVal::MdtIdentifierBranch
Branch to store all information of the MDT identifier.
Definition: IdentifierBranch.h:41
MuonValR4::MuonHoughTransformTester::m_out_gen_nRPCHits
MuonVal::ScalarBranch< unsigned int > & m_out_gen_nRPCHits
Definition: MuonHoughTransformTester.h:89
MuonValR4::MuonHoughTransformTester::m_out_max_nMm
MuonVal::ScalarBranch< unsigned int > & m_out_max_nMm
Definition: MuonHoughTransformTester.h:113
MuonValR4::MuonHoughTransformTester::finalize
virtual StatusCode finalize() override
Definition: MuonHoughTransformTester.cxx:50
MuonValR4::MuonHoughTransformTester::m_out_stationPhi
MuonVal::ScalarBranch< int > & m_out_stationPhi
Definition: MuonHoughTransformTester.h:84
MuonValR4::MuonHoughTransformTester::m_out_max_nsTgc
MuonVal::ScalarBranch< unsigned int > & m_out_max_nsTgc
Definition: MuonHoughTransformTester.h:112
MuonVal::sTgcIdentifierBranch
Branch to store all information of the sTgcIdentifier.
Definition: IdentifierBranch.h:96
MuonValR4::MuonHoughTransformTester::m_max_stgcHitErrorX
MuonVal::VectorBranch< float > & m_max_stgcHitErrorX
Definition: MuonHoughTransformTester.h:139
MuonGMR4::MuonDetectorManager
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MuonDetectorManager.h:61
MuonValR4::MuonHoughTransformTester::m_out_gen_z0
MuonVal::ScalarBranch< float > & m_out_gen_z0
Definition: MuonHoughTransformTester.h:96
MuonValR4::MuonHoughTransformTester::m_max_driftCirclRadius
MuonVal::VectorBranch< float > & m_max_driftCirclRadius
Definition: MuonHoughTransformTester.h:117
MuonValR4::MuonHoughTransformTester::m_max_MmHitErrorX
MuonVal::VectorBranch< float > & m_max_MmHitErrorX
Definition: MuonHoughTransformTester.h:145
MuonValR4::MuonHoughTransformTester::m_out_gen_x0
MuonVal::ScalarBranch< float > & m_out_gen_x0
Definition: MuonHoughTransformTester.h:98
MuonValR4::MuonHoughTransformTester::m_max_rpcHitPos
MuonVal::ThreeVectorBranch m_max_rpcHitPos
Definition: MuonHoughTransformTester.h:125
MuonR4::StationHoughSegmentSeedContainer
std::set< StationHoughSegmentSeeds > StationHoughSegmentSeedContainer
Definition: StationHoughMaxContainer.h:13
MuonValR4::MuonHoughTransformTester::m_out_max_nHits
MuonVal::ScalarBranch< unsigned int > & m_out_max_nHits
Definition: MuonHoughTransformTester.h:106
PlotCalibFromCool.label
label
Definition: PlotCalibFromCool.py:78
MuonValR4::MuonHoughTransformTester::m_max_tgcHitId
MuonVal::TgcIdentifierBranch m_max_tgcHitId
Definition: MuonHoughTransformTester.h:130
MuonValR4::MuonHoughTransformTester::m_out_gen_tantheta
MuonVal::ScalarBranch< float > & m_out_gen_tantheta
Definition: MuonHoughTransformTester.h:95
MuonR4::MuonSegment
Placeholder for what will later be the muon segment EDM representation.
Definition: MuonSpectrometer/MuonPhaseII/MuonPatternRecognition/MuonPatternEvent/MuonPatternEvent/MuonSegment.h:18
MuonValR4::MuonHoughTransformTester::m_out_max_nRpc
MuonVal::ScalarBranch< unsigned int > & m_out_max_nRpc
Definition: MuonHoughTransformTester.h:110
MuonValR4::MuonHoughTransformTester::m_out_segment_tantheta
MuonVal::ScalarBranch< float > & m_out_segment_tantheta
Definition: MuonHoughTransformTester.h:151
MuonValR4::MuonHoughTransformTester::m_drawEvtDisplaySuccess
Gaudi::Property< bool > m_drawEvtDisplaySuccess
Draw the event dispalty for the successful cases.
Definition: MuonHoughTransformTester.h:160
MuonValR4::MuonHoughTransformTester::toChamberTrf
Amg::Transform3D toChamberTrf(const ActsGeometryContext &gctx, const Identifier &hitId) const
Definition: MuonHoughTransformTester.cxx:56
MuonValR4::MuonHoughTransformTester::m_max_MmHitIsStero
MuonVal::VectorBranch< bool > & m_max_MmHitIsStero
Definition: MuonHoughTransformTester.h:144
SG::HandleKeyArray
Definition: StoreGate/StoreGate/HandleKeyArray.h:38
MuonVal::VectorBranch< float >
MuonTesterTree.h
ThreeVectorBranch.h
SG::ReadHandleKey< MuonR4::StationHoughSegmentSeedContainer >
MuonValR4::MuonHoughTransformTester::dumpUnMatched
StatusCode dumpUnMatched(const EventContext &ctx, const MuonR4::StationHoughSegmentSeedContainer &seedContainer, const std::set< const MuonR4::HoughSegmentSeed * > &matchedSeeds)
Definition: MuonHoughTransformTester.cxx:322
MuonValR4::MuonHoughTransformTester::m_out_max_x0
MuonVal::ScalarBranch< float > & m_out_max_x0
Definition: MuonHoughTransformTester.h:104
MuonValR4::MuonHoughTransformTester::m_out_segment_z0
MuonVal::ScalarBranch< float > & m_out_segment_z0
Definition: MuonHoughTransformTester.h:152
MuonVal::ThreeVectorBranch
Definition: ThreeVectorBranch.h:19
MuonValR4::MuonHoughTransformTester::m_out_max_tanphi
MuonVal::ScalarBranch< float > & m_out_max_tanphi
Definition: MuonHoughTransformTester.h:103
MuonValR4::MuonHoughTransformTester
Definition: MuonHoughTransformTester.h:36
RpcStripContainer.h
MuonValR4::MuonHoughTransformTester::m_out_stationEta
MuonVal::ScalarBranch< int > & m_out_stationEta
Definition: MuonHoughTransformTester.h:83
MuonValR4::MuonHoughTransformTester::m_tree
MuonVal::MuonTesterTree m_tree
Definition: MuonHoughTransformTester.h:81
AthHistogramAlgorithm.h
MuonValR4::MuonHoughTransformTester::m_drawEvtDisplayFailure
Gaudi::Property< bool > m_drawEvtDisplayFailure
Draw the event display for the cases where the hough transform did not find any hough maximum.
Definition: MuonHoughTransformTester.h:158
MuonValR4::MuonHoughTransformTester::m_max_tgcHitPos
MuonVal::ThreeVectorBranch m_max_tgcHitPos
Definition: MuonHoughTransformTester.h:131
MuonValR4::MuonHoughTransformTester::m_spacePointKey
SG::ReadHandleKey< MuonR4::MuonSpacePointContainer > m_spacePointKey
Definition: MuonHoughTransformTester.h:71
MuonValR4::MuonHoughTransformTester::m_out_hasMax
MuonVal::ScalarBranch< bool > & m_out_hasMax
Definition: MuonHoughTransformTester.h:99
MuonValR4::MuonHoughTransformTester::m_out_max_nMdt
MuonVal::ScalarBranch< unsigned int > & m_out_max_nMdt
Definition: MuonHoughTransformTester.h:109
MuonValR4::MuonHoughTransformTester::m_max_MmHitPos
MuonVal::ThreeVectorBranch m_max_MmHitPos
Definition: MuonHoughTransformTester.h:143
MuonVal::MmIdentifierBranch
Branch to store all information of the MmIdentifier.
Definition: IdentifierBranch.h:110
MuonVal::MuonTesterTree
Definition: MuonTesterTree.h:30
MuonValR4::MuonHoughTransformTester::m_out_gen_nMDTHits
MuonVal::ScalarBranch< unsigned int > & m_out_gen_nMDTHits
Definition: MuonHoughTransformTester.h:90
IdentifierBranch.h
MuonSegment.h
MuonValR4::MuonHoughTransformTester::m_max_stgcHitHasPhiMeas
MuonVal::VectorBranch< bool > & m_max_stgcHitHasPhiMeas
Definition: MuonHoughTransformTester.h:138
MuonValR4::MuonHoughTransformTester::m_out_max_z0
MuonVal::ScalarBranch< float > & m_out_max_z0
Definition: MuonHoughTransformTester.h:102
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
TgcStripContainer.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonVal::RpcIdentifierBranch
Definition: IdentifierBranch.h:53
MuonValR4::MuonHoughTransformTester::m_max_stgcHitPos
MuonVal::ThreeVectorBranch m_max_stgcHitPos
Definition: MuonHoughTransformTester.h:137
MuonValR4::MuonHoughTransformTester::m_out_gen_tanphi
MuonVal::ScalarBranch< float > & m_out_gen_tanphi
Definition: MuonHoughTransformTester.h:97
MuonValR4::MuonHoughTransformTester::m_max_rpcHitErrorY
MuonVal::VectorBranch< float > & m_max_rpcHitErrorY
Definition: MuonHoughTransformTester.h:128
MuonValR4::MuonHoughTransformTester::m_max_driftCircleTubePos
MuonVal::ThreeVectorBranch m_max_driftCircleTubePos
Definition: MuonHoughTransformTester.h:118
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MuonValR4::MuonHoughTransformTester::m_inSimHitKeys
SG::ReadHandleKeyArray< xAOD::MuonSimHitContainer > m_inSimHitKeys
Definition: MuonHoughTransformTester.h:67
MuonValR4::MuonHoughTransformTester::m_max_driftCircleId
MuonVal::MdtIdentifierBranch m_max_driftCircleId
Dump of the Mdt hits on maximum.
Definition: MuonHoughTransformTester.h:116
MuonValR4::MuonHoughTransformTester::fillMaximum
void fillMaximum(const MuonR4::HoughSegmentSeed *foundMax)
Definition: MuonHoughTransformTester.cxx:254
MuonValR4::MuonHoughTransformTester::m_out_max_tantheta
MuonVal::ScalarBranch< float > & m_out_max_tantheta
Definition: MuonHoughTransformTester.h:101
MuonValR4::MuonHoughTransformTester::m_max_stgcHitId
MuonVal::sTgcIdentifierBranch m_max_stgcHitId
Definition: MuonHoughTransformTester.h:136
MuonDetectorManager.h
MuonValR4::MuonHoughTransformTester::m_allCanName
Gaudi::Property< std::string > m_allCanName
Definition: MuonHoughTransformTester.h:163
MuonValR4::MuonHoughTransformTester::m_max_driftCircleDriftUncert
MuonVal::VectorBranch< float > & m_max_driftCircleDriftUncert
Definition: MuonHoughTransformTester.h:119
MuonSimHitContainer.h
MuonValR4::MuonHoughTransformTester::m_max_rpcHitErrorX
MuonVal::VectorBranch< float > & m_max_rpcHitErrorX
Definition: MuonHoughTransformTester.h:127
MuonValR4::MuonHoughTransformTester::m_out_max_hasPhiExtension
MuonVal::ScalarBranch< bool > & m_out_max_hasPhiExtension
Definition: MuonHoughTransformTester.h:100
MuonValR4::MuonHoughTransformTester::drawEventDisplay
StatusCode drawEventDisplay(const EventContext &ctx, const std::vector< const xAOD::MuonSimHit * > &simHits, const MuonR4::HoughSegmentSeed *foundMax) const
Definition: MuonHoughTransformTester.cxx:350
MuonValR4::MuonHoughTransformTester::m_out_gen_nHits
MuonVal::ScalarBranch< unsigned int > & m_out_gen_nHits
Definition: MuonHoughTransformTester.h:88
MuonValR4::MuonHoughTransformTester::m_r4DetMgr
const MuonGMR4::MuonDetectorManager * m_r4DetMgr
Definition: MuonHoughTransformTester.h:76
MuonValR4::MuonHoughTransformTester::m_max_driftCircleTubeLength
MuonVal::VectorBranch< float > & m_max_driftCircleTubeLength
Definition: MuonHoughTransformTester.h:120
MuonVal::MuonTesterTree::newVector
VectorBranch< T > & newVector(const std::string &name)
Creates new branches and returns their reference.
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
MuonValR4::MuonHoughTransformTester::m_out_max_nTgc
MuonVal::ScalarBranch< unsigned int > & m_out_max_nTgc
Definition: MuonHoughTransformTester.h:111
MuonValR4::MuonHoughTransformTester::m_out_gen_nTGCHits
MuonVal::ScalarBranch< unsigned int > & m_out_gen_nTGCHits
Definition: MuonHoughTransformTester.h:91
MuonValR4::MuonHoughTransformTester::m_out_segment_x0
MuonVal::ScalarBranch< float > & m_out_segment_x0
Definition: MuonHoughTransformTester.h:154
ReadCondHandleKey.h
MuonValR4::MuonHoughTransformTester::m_out_gen_Eta
MuonVal::ScalarBranch< float > & m_out_gen_Eta
Definition: MuonHoughTransformTester.h:85
MuonValR4
Lightweight algorithm to read xAOD MDT sim hits and (fast-digitised) drift circles from SG and fill a...
Definition: MDTFastDigiTester.cxx:8
MdtDriftCircleContainer.h
MuonValR4::MuonHoughTransformTester::m_out_gen_nMMits
MuonVal::ScalarBranch< unsigned int > & m_out_gen_nMMits
Definition: MuonHoughTransformTester.h:93
MuonValR4::MuonHoughTransformTester::m_geoCtxKey
SG::ReadHandleKey< ActsGeometryContext > m_geoCtxKey
Definition: MuonHoughTransformTester.h:73
MuonVal::ScalarBranch< int >
MuonValR4::MuonHoughTransformTester::m_out_gen_Phi
MuonVal::ScalarBranch< float > & m_out_gen_Phi
Definition: MuonHoughTransformTester.h:86
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
MuonVal::MuonTesterTree::newScalar
ScalarBranch< T > & newScalar(const std::string &name)
MuonValR4::MuonHoughTransformTester::~MuonHoughTransformTester
virtual ~MuonHoughTransformTester()=default
MuonValR4::MuonHoughTransformTester::m_max_MmHitErrorY
MuonVal::VectorBranch< float > & m_max_MmHitErrorY
Definition: MuonHoughTransformTester.h:146
MuonValR4::MuonHoughTransformTester::m_out_max_nPhiHits
MuonVal::ScalarBranch< unsigned int > & m_out_max_nPhiHits
Definition: MuonHoughTransformTester.h:108
MuonValR4::MuonHoughTransformTester::initialize
virtual StatusCode initialize() override
Definition: MuonHoughTransformTester.cxx:32
MuonValR4::MuonHoughTransformTester::MuonHoughTransformTester
MuonHoughTransformTester(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonHoughTransformTester.cxx:27
MuonValR4::MuonHoughTransformTester::execute
virtual StatusCode execute() override
Definition: MuonHoughTransformTester.cxx:67
MuonValR4::MuonHoughTransformTester::m_inSegmentKey
SG::ReadHandleKey< MuonR4::MuonSegmentContainer > m_inSegmentKey
Definition: MuonHoughTransformTester.h:70
MuonValR4::MuonHoughTransformTester::m_allCan
std::unique_ptr< TCanvas > m_allCan
Definition: MuonHoughTransformTester.h:162
MuonValR4::MuonHoughTransformTester::m_max_MmHitId
MuonVal::MmIdentifierBranch m_max_MmHitId
Definition: MuonHoughTransformTester.h:142
MuonValR4::MuonHoughTransformTester::m_out_gen_Pt
MuonVal::ScalarBranch< float > & m_out_gen_Pt
Definition: MuonHoughTransformTester.h:87
MuonValR4::MuonHoughTransformTester::m_max_tgcHitErrorX
MuonVal::VectorBranch< float > & m_max_tgcHitErrorX
Definition: MuonHoughTransformTester.h:133
MuonValR4::MuonHoughTransformTester::m_out_segment_tanphi
MuonVal::ScalarBranch< float > & m_out_segment_tanphi
Definition: MuonHoughTransformTester.h:153
MuonValR4::MuonHoughTransformTester::m_max_tgcHitErrorY
MuonVal::VectorBranch< float > & m_max_tgcHitErrorY
Definition: MuonHoughTransformTester.h:134
MuonValR4::MuonHoughTransformTester::m_max_rpcHitHasPhiMeas
MuonVal::VectorBranch< bool > & m_max_rpcHitHasPhiMeas
Definition: MuonHoughTransformTester.h:126
MuonValR4::MuonHoughTransformTester::m_max_rpcHitId
MuonVal::RpcIdentifierBranch m_max_rpcHitId
Branches to access the space points in the maximum.
Definition: MuonHoughTransformTester.h:124
MuonValR4::MuonHoughTransformTester::m_out_segment_chi2_measurement
MuonVal::VectorBranch< double > & m_out_segment_chi2_measurement
Definition: MuonHoughTransformTester.h:155
MuonValR4::MuonHoughTransformTester::m_inHoughSegmentSeedKey
SG::ReadHandleKey< MuonR4::StationHoughSegmentSeedContainer > m_inHoughSegmentSeedKey
Definition: MuonHoughTransformTester.h:69
MuonValR4::MuonHoughTransformTester::m_out_segment_chi2
MuonVal::ScalarBranch< float > & m_out_segment_chi2
Definition: MuonHoughTransformTester.h:150
MuonValR4::MuonHoughTransformTester::m_out_hasSegment
MuonVal::ScalarBranch< bool > & m_out_hasSegment
Definition: MuonHoughTransformTester.h:149
StationHoughMaxContainer.h
MuonR4::HoughSegmentSeed_impl
Representation of a segment seed (a fully processed hough maximum) produced by the hough transform.
Definition: HoughSegmentSeed.h:13
MuonValR4::MuonHoughTransformTester::m_max_tgcHitHasPhiMeas
MuonVal::VectorBranch< bool > & m_max_tgcHitHasPhiMeas
Definition: MuonHoughTransformTester.h:132
MuonValR4::MuonHoughTransformTester::drawChi2
StatusCode drawChi2(const EventContext &ctx, const std::vector< const xAOD::MuonSimHit * > &simHits, const MuonR4::HoughSegmentSeed *foundMax, const MuonR4::MuonSegment *foundSegment, const std::string &label) const
Definition: MuonHoughTransformTester.cxx:496
MuonValR4::MuonHoughTransformTester::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonHoughTransformTester.h:75
MuonValR4::MuonHoughTransformTester::m_out_stationName
MuonVal::ScalarBranch< int > & m_out_stationName
Definition: MuonHoughTransformTester.h:82
MuonValR4::MuonHoughTransformTester::m_out_gen_nsTGCHits
MuonVal::ScalarBranch< unsigned int > & m_out_gen_nsTGCHits
Definition: MuonHoughTransformTester.h:92
IMuonIdHelperSvc.h
ServiceHandle< Muon::IMuonIdHelperSvc >
MuonValR4::MuonHoughTransformTester::m_dumpUnmatchedSeeds
Gaudi::Property< bool > m_dumpUnmatchedSeeds
Definition: MuonHoughTransformTester.h:78