68 : propagatorLabel(conf.getParameter<
std::
string>(
"propagator")),
75 produces<TrackCandidateCollection>();
78 if (conf.
exists(
"hitMasks")) {
118 for (
unsigned seedIndex = 0; seedIndex <
seeds->size(); ++seedIndex) {
120 std::vector<int32_t> recHitCombinationIndices;
123 if (
seed.nHits() == 0) {
130 recHitCombinationIndices.push_back(icomb);
134 for (
auto icomb : recHitCombinationIndices) {
137 <<
" found seed with recHitCombination out or range: " << icomb << std::endl;
142 std::vector<const FastTrackerRecHit*> selectedRecHits;
146 selectedRecHits.push_back(static_cast<const FastTrackerRecHit*>(&
recHit));
151 if (!selectedRecHits.empty()) {
152 lastHitToSkip = selectedRecHits.back();
159 for (
unsigned hitIndex = hitsAlongMomentum ? 0 : recHitCombination.size() - 1;
160 hitIndex < recHitCombination.size();
161 hitsAlongMomentum ? ++hitIndex : --hitIndex) {
166 if (lastHitToSkip->
sameId(selectedRecHit)) {
167 lastHitToSkip =
nullptr;
183 selectedRecHits.push_back(selectedRecHit);
191 selectedRecHits.back() = selectedRecHit;
211 DetId seedDetId(
seed.startingState().detId());
212 const GeomDet* gdet = trackerGeometry.idToDet(seedDetId);
void setRecHitCombinationIndex(edm::OwnVector< T > &recHits, int32_t icomb)
static std::vector< int > matchRecHitCombinations(const TrajectorySeed &seed, const FastTrackerRecHitCombinationCollection &recHitCombinationCollection, const std::vector< SimTrack > &simTrackCollection, double maxMatchEstimator, const Propagator &propagator, const MagneticField &magneticField, const TrackerGeometry &trackerGeometry)
T getParameter(std::string const &) const
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerGeometryESToken_
void produce(edm::Event &, const edm::EventSetup &) override
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedToken
#define DEFINE_FWK_MODULE(type)
edm::EDGetTokenT< edm::SimTrackContainer > simTrackToken
TrackCandidateProducer(const edm::ParameterSet &conf)
bool exists(std::string const ¶meterName) const
checks if a parameter exists
static TrackingLayer createFromDetId(const DetId &detId, const TrackerTopology &trackerTopology)
std::vector< TrackCandidate > TrackCandidateCollection
constexpr bool isUninitialized() const noexcept
bool sameId(const FastTrackerRecHit *other, size_t i=0, size_t j=0) const
FastTrackerRecHitSplitter hitSplitter
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magneticFieldESToken_
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< FastTrackerRecHitCombinationCollection > recHitCombinationsToken
bool getData(T &iHolder) const
edm::EDGetTokenT< std::vector< bool > > hitMasksToken
double maxSeedMatchEstimator
bool hitIsMasked(const FastTrackerRecHit *hit, const std::vector< bool > &hitMasks)
int32_t getRecHitCombinationIndex(const T &object)
const edm::ESGetToken< Propagator, TrackingComponentsRecord > propagatorESToken_
std::vector< FastTrackerRecHitRef > FastTrackerRecHitCombination
const Plane & surface() const
The nominal surface of the GeomDet.
DetId geographicalId() const
constexpr uint32_t rawId() const
get the raw id
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
double hitLocalError(const TrackingRecHit *hit)
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > trackerTopologyESToken_
void split(const FastTrackerRecHit &hitIn, edm::OwnVector< TrackingRecHit > &hitsOut, bool alongMomentum) const
std::string propagatorLabel