1 #ifndef GeometricSearchDetMeasurements_H
2 #define GeometricSearchDetMeasurements_H
91 template <
class TrajectoryState>
93 const std::vector<DetWithState>& compatDets,
94 const TrajectoryState& ts,
126 template <
class TrajectoryState>
127 std::vector<TrajectoryMeasurement>
129 const std::vector<DetWithState>& compatDets,
130 const TrajectoryState& ts,
134 std::vector<TrajectoryMeasurement>
result;
135 if (!compatDets.empty()) {
136 for ( std::vector<DetWithState>::const_iterator
i=compatDets.begin();
137 i != compatDets.end();
i++) {
147 result.insert( result.end(), tmp.begin(),
end);
154 if ( result.size() > 1) {
159 if ( !result.empty()) {
161 addInvalidMeas( result, result.front().predictedState(), result.front().recHit()->det());
165 addInvalidMeas( result, compatDets.front().second, compatDets.front().first);
172 throw MeasurementDetException(
"GeometricSearchDetMeasurements::get called with empty std::vector<DetWithState>");
GeometricSearchDetMeasurements(const MeasurementDetSystem *detSysytem)
GeometricSearchDet::DetWithState DetWithState
TrajectoryStateOnSurface TSOS
const MeasurementDetSystem * theDetSystem
TrajectoryMeasurementGroup TMG
virtual std::vector< TrajectoryMeasurement > fastMeasurements(const TrajectoryStateOnSurface &stateOnThisDet, const TrajectoryStateOnSurface &startingState, const Propagator &, const MeasurementEstimator &) const =0
void addInvalidMeas(std::vector< TrajectoryMeasurement > &result, const TrajectoryStateOnSurface &ts, const GeomDet *det) const
std::vector< std::vector< double > > tmp
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
virtual const MeasurementDet * idToDet(const DetId &id) const =0
Return the pointer to the MeasurementDet corresponding to a given DetId.
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
std::vector< TrajectoryMeasurement > get(const GeometricSearchDet &det, const std::vector< DetWithState > &compatDets, const TrajectoryState &ts, const Propagator &prop, const MeasurementEstimator &est) const