31 {
32 ATH_MSG_VERBOSE(
"enter createBroadCluster: number of prds " << prdList.size());
33
34
35 if (prdList.empty()) {
37 return nullptr;
38 }
39 std::vector<const Trk::PrepRawData*> prds{prdList.begin(), prdList.end()};
40 const Trk::TrkDetElementBase* detectorElement = prds.front()->detectorElement();
41 Identifier
channelId = (*prds.front()).identify();
44 if (!isRpc && !isTgc) {
46 return nullptr;
47 }
48
49 const bool measuresPhi =
m_idHelperSvc->measuresPhi(channelId);
50 for (const Trk::PrepRawData* prd : prds) {
54 return nullptr;
55 }
56 if (prd->detectorElement() != detectorElement) {
58 return nullptr;
59 }
62 << ", nDim: " << prd->localCovariance().rows());
63 }
64
65
66 std::vector<std::unique_ptr<const Muon::MuonClusterOnTrack>> rots =
createPrdRots(prds);
67 auto assocProbs = std::vector<double>(rots.size(), 0.);
68
69
70 std::list<int> limitingChannels;
71 std::vector<std::unique_ptr<const Muon::MuonClusterOnTrack>> limitingRots;
73
74
76
77
80 std::unique_ptr<Trk::Surface> surface{};
82 limitingRots);
83
84
85 limitingChannels.clear();
86
87
88
89 return std::make_unique<CompetingMuonClustersOnTrack>(
90 std::move(parameters), std::move(errorMatrix), surface.release(),
91 std::move(rots), std::move(assocProbs));
92}
#define ATH_MSG_WARNING(x)
void makeClustersBySurface(std::list< int > &limitingChannels, std::vector< std::unique_ptr< const Muon::MuonClusterOnTrack > > &limitingRots, const std::vector< const Trk::PrepRawData * > &prds, const std::vector< std::unique_ptr< const Muon::MuonClusterOnTrack > > &rots) const
std::vector< std::unique_ptr< const Muon::MuonClusterOnTrack > > createPrdRots(std::vector< const Trk::PrepRawData * > &prds) const
void makeOverallParameters(Trk::LocalParameters ¶meters, Amg::MatrixX &errorMatrix, std::unique_ptr< Trk::Surface > &surface, std::list< int > &limitingChannels, std::vector< std::unique_ptr< const Muon::MuonClusterOnTrack > > &limitingRots) const
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
void applyClusterConsistency(std::list< int > &limitingChannels, std::vector< std::unique_ptr< const Muon::MuonClusterOnTrack > > &limitingRots) const
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.