72 {
73 std::vector<const MuonCombined::InDetCandidateToTagMap*> tagMaps;
76 for (SG::ReadHandle<MuonCombined::InDetCandidateToTagMap>& h :
m_tagMaps.makeHandles(ctx)) tagMaps.push_back(
h.cptr());
77 }
78
79
81 ATH_CHECK(wh_muons.
recordNonConst(std::make_unique<xAOD::MuonContainer>(), std::make_unique<xAOD::MuonAuxContainer>()));
83 MuonCombined::IMuonCreatorTool::OutputData
output(*(wh_muons.
ptr()));
84
85
86
89 ATH_CHECK(wh_combtp.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
90 ATH_CHECK(wh_combtrk.record(std::make_unique<TrackCollection>()));
91 output.combinedTrackParticleContainer = wh_combtp.ptr();
92 output.combinedTrackCollection = wh_combtrk.ptr();
93
94
97 ATH_CHECK(wh_extrtp.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
98 ATH_CHECK(wh_extrtrk.record(std::make_unique<TrackCollection>()));
99 output.extrapolatedTrackParticleContainer = wh_extrtp.ptr();
100 output.extrapolatedTrackCollection = wh_extrtrk.ptr();
101
102
105 ATH_CHECK(wh_msextrtp.record(std::make_unique<xAOD::TrackParticleContainer>(), std::make_unique<xAOD::TrackParticleAuxContainer>()));
106 ATH_CHECK(wh_msextrtrk.record(std::make_unique<TrackCollection>()));
107 output.msOnlyExtrapolatedTrackParticleContainer = wh_msextrtp.ptr();
108 output.msOnlyExtrapolatedTrackCollection = wh_msextrtrk.ptr();
109
110
113 output.xaodSegmentContainer = rh_segment.ptr();
114 }
116 SG::ReadHandle<MuonCombined::MuonTagToSegMap> rh_segAssocMap(
m_segAssocMapKey, ctx);
117 output.tagToSegmentAssocMap = rh_segAssocMap.ptr();
118 }
119
120
121 std::unique_ptr<xAOD::CaloClusterContainer> caloclusters{nullptr};
122 std::unique_ptr<xAOD::CaloClusterAuxContainer> caloclustersaux{nullptr};
123
125 caloclusters = std::make_unique<xAOD::CaloClusterContainer>();
126 caloclustersaux = std::make_unique<xAOD::CaloClusterAuxContainer>();
127 caloclusters->setStore(caloclustersaux.get());
128 output.clusterContainer = caloclusters.get();
129 }
130
131 SG::WriteHandle<xAOD::SlowMuonContainer> wh_slowmuon;
134
137 ATH_CHECK(wh_slowmuon.
record(std::make_unique<xAOD::SlowMuonContainer>(), std::make_unique<xAOD::SlowMuonAuxContainer>()));
138 output.slowMuonContainer = wh_slowmuon.
ptr();
139 } else {
140 for (SG::ReadHandle<MuonCandidateCollection>& muonCandidateRH :
m_muonCandidateKeys.makeHandles(ctx)) {
141 if (!muonCandidateRH.isValid()) {
142 ATH_MSG_ERROR(
"Could not read " << muonCandidateRH.fullKey());
143 return StatusCode::FAILURE;
144 }
145 muon_candidates.
insert(muon_candidates.
end(), muonCandidateRH->begin(), muonCandidateRH->end());
146 }
147 }
149
153 std::unique_ptr<CaloClusterCellLinkContainer> clusterlinks = std::make_unique<CaloClusterCellLinkContainer>();
157 ATH_CHECK(wh_clusters.
record(std::move(caloclusters), std::move(caloclustersaux)));
158 }
159
160
161
162
163
164
165
166
168
169 auto muon_n = Monitored::Scalar<int>("muon_n", wh_muons->size());
170 auto muon_pt =
174
175 std::vector<float> MDT_R, MDT_dR;
176 for( const auto mu : *wh_muons ) {
177 if (!(
mu->muonType() == xAOD::Muon::CaloTagged ||
mu->muonType() == xAOD::Muon::SegmentTagged)) {
178 const Trk::Track* trk =
mu->primaryTrackParticle()->track();
180 const Muon::MdtDriftCircleOnTrack* mdt = dynamic_cast <const Muon::MdtDriftCircleOnTrack*>(tsos->measurementOnTrack());
181 if (!mdt) continue;
184 }
185 }
186 }
189
190 auto satrks_n = Monitored::Scalar<int>("satrks_n", wh_extrtp->size());
192 [](auto const& satrk) { return satrk->pt() * MeVtoGeV; });
195
196 auto cbtrks_n = Monitored::Scalar<int>("cbtrks_n", wh_combtp->size());
198 [](auto const& cbtrk) { return cbtrk->pt() * MeVtoGeV; });
201
204
205 auto idtrks_n = Monitored::Scalar<int>("idtrks_n", indetCandidateCollection->size());
207 [](
auto const& idtrk) {
return idtrk->indetTrackParticle().pt() *
MeVtoGeV; });
209 [](auto const& idtrk) { return idtrk->indetTrackParticle().eta(); });
211 [](auto const& idtrk) { return idtrk->indetTrackParticle().phi(); });
212 auto monitorIt = Monitored::Group(
m_monTool, muon_n, muon_pt, muon_eta, muon_phi, muon_MDT_R, muon_MDT_dR, satrks_n, satrks_pt, satrks_eta, satrks_phi,
213 cbtrks_n, cbtrks_pt, cbtrks_eta, cbtrks_phi, idtrks_n, idtrks_pt, idtrks_eta, idtrks_phi);
214 } else
215 auto monitorIt = Monitored::Group(
m_monTool, muon_n, muon_pt, muon_eta, muon_phi, muon_MDT_R, muon_MDT_dR, satrks_n, satrks_pt, satrks_eta, satrks_phi,
216 cbtrks_n, cbtrks_pt, cbtrks_eta, cbtrks_phi);
217 }
218
219 return StatusCode::SUCCESS;
220}
#define ATH_CHECK
Evaluate an expression and check for errors.
iterator end() noexcept
Return an iterator pointing past the end of the collection.
iterator insert(iterator position, value_type pElem)
Add a new element to the collection.
const DV * asDataVector() const
Return a pointer to this object, as a const DataVector.
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_combinedCollectionName
SG::ReadHandleKeyArray< MuonCandidateCollection > m_muonCandidateKeys
SG::ReadHandleKey< MuonCombined::MuonTagToSegMap > m_segAssocMapKey
SG::ReadHandleKey< InDetCandidateCollection > m_indetCandidateCollectionName
SG::WriteHandleKey< xAOD::SlowMuonContainer > m_slowMuonCollectionName
SG::WriteHandleKey< xAOD::MuonContainer > m_muonCollectionName
SG::WriteHandleKey< TrackCollection > m_extrapolatedTrkCollectionName
SG::WriteHandleKey< TrackCollection > m_msOnlyExtrapolatedTrkCollectionName
SG::WriteHandleKey< CaloClusterCellLinkContainer > m_clusterContainerLinkName
ToolHandle< MuonCombined::IMuonCreatorTool > m_muonCreatorTool
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_clusterContainerName
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_msOnlyExtrapolatedCollectionName
Gaudi::Property< bool > m_makeClusters
Gaudi::Property< bool > m_buildSlowMuon
Gaudi::Property< bool > m_doSA
SG::WriteHandleKey< TrackCollection > m_combinedTrkCollectionName
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_extrapolatedCollectionName
SG::ReadHandleKeyArray< MuonCombined::InDetCandidateToTagMap > m_tagMaps
ToolHandle< GenericMonitoringTool > m_monTool
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_segContainerName
double driftRadius() const
Returns the value of the drift radius.
const ServiceHandle< IProxyDict > & storeHandle() const
Return handle to the referenced store.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
StatusCode recordNonConst(std::unique_ptr< T > data)
Record a non-const object to the store.
pointer_type ptr()
Dereference the pointer.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.