18 double maxMatchEstimator,
23 std::vector<int32_t>
result;
28 const GeomDet* seedState_det = trackerGeometry.
idToDet(seedState_detId);
29 const Surface* seedState_surface = &seedState_det->surface();
34 for (
unsigned recHitCombinationIndex = 0; recHitCombinationIndex < recHitCombinationCollection.size();
35 recHitCombinationIndex++) {
36 const auto& recHitCombination = recHitCombinationCollection[recHitCombinationIndex];
37 int simTrackIndex = recHitCombination.back()->simTrackId(0);
38 if (simTrackIndex < 0 || simTrackIndex >= nSimTracks) {
39 throw cms::Exception(
"SeedMatcher") <<
"SimTrack index out of range: " << simTrackIndex << std::endl;
43 if (matchEstimator < maxMatchEstimator) {
44 result.push_back(recHitCombinationIndex);
56 simTrack.trackerSurfacePosition().y(),
57 simTrack.trackerSurfacePosition().z());
59 simTrack.trackerSurfaceMomentum().y(),
60 simTrack.trackerSurfaceMomentum().z());
63 if (simTrack_atTrackerSurface_position.basicVector().dot(simTrack_atTrackerSurface_momentum.basicVector()) *
71 simTrack_atTrackerSurface_position, simTrack_atTrackerSurface_momentum,
simTrack.charge(), &
magneticField);
77 if (!simtrack_atSeedStateSurface_state.
isValid()) {
92 if (!
error.Invert()) {
93 edm::LogWarning(
"FastSim SeedToSimTrackMatcher") <<
"Cannot invert seed state error matrix => no match...";
97 return ROOT::Math::Similarity(difference,
error);