28 void addInvalidMeas( std::vector<TrajectoryMeasurement>&
result,
43 std::vector<TrajectoryMeasurement>
47 std::vector<DetWithState>
const& compatDets,
51 std::vector<TrajectoryMeasurement>
result;
56 for (
auto const & ds : compatDets) {
63 for (std::size_t
i=0;
i!=tmps.
size(); ++
i)
64 result.emplace_back(ds.second,std::move(tmps.
hits[
i]),tmps.
distances[
i],&layer);
71 if ( result.size() > 1) {
76 if ( !result.empty()) {
78 addInvalidMeas( result, result.front().predictedState(), result.front().recHit()->det(),layer);
82 addInvalidMeas( result, compatDets.front().second, compatDets.front().first,layer);
90 vector<TrajectoryMeasurement>
98 vector<DetWithState>
const & compatDets = layer.
compatibleDets( startingState, prop, est);
100 if (!compatDets.empty())
return get(theDetSystem, theData, layer, compatDets, startingState, prop, est);
102 vector<TrajectoryMeasurement>
result;
103 pair<bool, TrajectoryStateOnSurface> compat = layer.
compatible( startingState, prop, est);
109 LogDebug(
"LayerMeasurements")<<
"adding a missing hit.";
110 }
else LogDebug(
"LayerMeasurements")<<
"adding not measurement.";
118 vector<TrajectoryMeasurementGroup>
123 vector<TrajectoryMeasurementGroup>
result;
126 result.reserve(groups.size());
129 for (
auto& grp : groups) {
130 if ( grp.empty() )
continue;
132 vector<TrajectoryMeasurement> tmpVec;
133 for (
auto const & det : grp) {
138 if (mdet.
measurements( det.trajectoryState(), est,tmps))
139 for (std::size_t
i=0;
i!=tmps.
size(); ++
i)
140 tmpVec.emplace_back(det.trajectoryState(),std::move(tmps.
hits[
i]),tmps.
distances[
i],&layer);
146 addInvalidMeas( tmpVec, grp,layer);
147 result.emplace_back(std::move(tmpVec), std::move(grp));
152 if (result.empty()) {
153 pair<bool, TrajectoryStateOnSurface> compat = layer.
compatible( startingState, prop, est);
155 vector<TrajectoryMeasurement> tmVec;
157 result.emplace_back(std::move(tmVec),
DetGroup());
167 if (!measVec.empty()) {
169 measVec.emplace_back(measVec.front().predictedState(),
173 else if (!group.empty()) {
175 measVec.emplace_back(group.front().trajectoryState(),
virtual std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const =0
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
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
DetId geographicalId() const
The label of this GeomDet.
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
void addInvalidMeas(std::vector< TrajectoryMeasurement > &measVec, const DetGroup &group, const DetLayer &layer) const
std::vector< TrajectoryMeasurementGroup > groupedMeasurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
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