13 vector<DetGroup>&
result) {
17 if (tmp.empty())
return false;
19 if (result.empty()) result.swap(tmp);
23 vector<GeometricSearchDet::DetWithState> compatDets;
25 if (compatDets.empty())
return false;
30 if (result.size() != 1)
31 edm::LogError(
"TkDetLayers") <<
"CompatibleDetToGroupAdder: det is not grouped but result has more than one group!" ;
32 result.front().reserve(result.front().size()+compatDets.size());
33 for (vector<GeometricSearchDet::DetWithState>::const_iterator
i=compatDets.begin();
34 i!=compatDets.end();
i++)
35 result.front().push_back(std::move( *
i));
47 vector<DetGroup>&
result) {
50 auto && compat = theCompatibilityChecker.
isCompatible( &det,tsos, prop, est);
52 if (!compat.first)
return false;
57 if (result.size() != 1)
58 edm::LogError(
"TkDetLayers") <<
"CompatibleDetToGroupAdder: det is not grouped but result has more than one group!" ;
61 result.front().emplace_back(&det, std::move(compat.second));
virtual void groupedCompatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
static void addSameLevel(std::vector< DetGroup > &&gvec, std::vector< DetGroup > &result)
static std::pair< bool, TrajectoryStateOnSurface > isCompatible(const GeomDet *theDet, const TrajectoryStateOnSurface &ts, const Propagator &prop, const MeasurementEstimator &est)
static bool add(const GeometricSearchDet &det, const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) __attribute__((hot))
std::vector< std::vector< double > > tmp
virtual void compatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const