25 inline void addInvalidMeas(std::vector<TrajectoryMeasurement>&
result,
42 std::vector<DetWithState>
const& compatDets,
46 std::vector<TrajectoryMeasurement>
result;
51 for (
auto const& ds : compatDets) {
57 for (std::size_t
i = 0;
i != tmps.
size(); ++
i)
65 if (result.size() > 1) {
69 if (!result.empty()) {
71 addInvalidMeas(result, result.front().predictedState(), *(result.front().recHit()->det()), layer);
74 addInvalidMeas(result, compatDets.front().second, *(compatDets.front().first), layer);
80 void addInvalidMeas(vector<TrajectoryMeasurement>& measVec,
const DetGroup&
group,
const DetLayer& layer) {
81 if (!measVec.empty()) {
83 auto const& ts = measVec.front().predictedState();
84 auto toll = measVec.front().recHitR().det()->surface().bounds().significanceInside(
85 ts.localPosition(), ts.localError().positionError());
87 measVec.front().predictedState(),
91 }
else if (!group.empty()) {
93 auto const& ts = group.front().trajectoryState();
94 auto toll = group.front().det()->surface().bounds().significanceInside(ts.localPosition(),
95 ts.localError().positionError());
96 measVec.emplace_back(group.front().trajectoryState(),
110 std::vector<BaseTrackerRecHit*>
result;
111 auto const& compatDets = layer.
compatibleDets(startingState, prop, est);
112 if (compatDets.empty())
114 for (
auto const& ds : compatDets) {
115 auto mdet = detSystem_.idToDet(ds.first->geographicalId(), data_);
116 mdet.
recHits(result, ds.second, est);
127 vector<DetWithState>
const& compatDets = layer.
compatibleDets(startingState, prop, est);
129 if (!compatDets.empty())
130 return get(detSystem_, data_, layer, compatDets, startingState, prop, est);
132 vector<TrajectoryMeasurement>
result;
133 pair<bool, TrajectoryStateOnSurface> compat = layer.
compatible(startingState, prop, est);
141 LogDebug(
"LayerMeasurements") <<
"adding a missing hit.";
143 LogDebug(
"LayerMeasurements") <<
"adding not measurement.";
152 vector<TrajectoryMeasurementGroup>
result;
155 result.reserve(groups.size());
158 for (
auto& grp : groups) {
162 vector<TrajectoryMeasurement> tmpVec;
163 for (
auto const& det : grp) {
168 if (mdet.
measurements(det.trajectoryState(), est, tmps))
169 for (std::size_t
i = 0;
i != tmps.
size(); ++
i)
175 LogDebug(
"LayerMeasurements") <<
"Sorting " << tmpVec.size() <<
" measurements in this grp.";
177 addInvalidMeas(tmpVec, grp, layer);
182 if (result.empty()) {
183 pair<bool, TrajectoryStateOnSurface> compat = layer.
compatible(startingState, prop, est);
185 vector<TrajectoryMeasurement> tmVec;
186 tmVec.emplace_back(compat.second,
std::vector< TrajectoryMeasurement > measurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
virtual std::vector< DetGroup > groupedCompatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
std::vector< BaseTrackerRecHit * > recHits(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
RecHitContainer recHits(const TrajectoryStateOnSurface &tsos) const
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
DetId geographicalId() const
The label of this GeomDet.
virtual std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const =0
std::vector< TrajectoryMeasurementGroup > groupedMeasurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
char data[epos_bytes_allocation]
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, TempMeasurements &result) const