19 theCategory =
"FastSimulation|Muons||FastTSGFromIOHit";
24 const auto& seedLabels = iConfig.
getParameter<std::vector<edm::InputTag> >(
"SeedCollectionLabels");
25 for (
const auto& seedLabel : seedLabels) {
35 std::vector<TrajectorySeed>&
result) {
40 if (muRef->pt() <
thePtCut || muRef->innerMomentum().Rho() <
thePtCut || muRef->innerMomentum().R() < 2.5) {
50 seedCollections.resize(
seedsTks.size());
51 for (
unsigned iSeed = 0; iSeed <
seedsTks.size(); iSeed++) {
59 std::set<unsigned> simTrackIds;
60 for (
const auto& seeds : seedCollections) {
61 for (
const auto&
seed : *seeds) {
69 if (simTrackIds.find(simTrackId) != simTrackIds.end()) {
72 simTrackIds.insert(simTrackId);
75 if (!
clean(muRef, regionRef, &
seed, simTrack)) {
92 double etaSeed = theSimTrack.
momentum().Eta();
93 double etaLimit = (fabs(fabs(etaRange.
max()) - fabs(etaRange.
mean())) < 0.05)
95 : fabs(fabs(etaRange.
max()) - fabs(etaRange.
mean()));
96 bool inEtaRange = etaSeed >= (etaRange.
mean() - etaLimit) && etaSeed <= (etaRange.
mean() + etaLimit);
103 double phiSeed = theSimTrack.
momentum().Phi();
104 double phiLimit = (phiMargin.
right() < 0.05) ? 0.05 : phiMargin.
right();
113 bool inPtRange = ptSeed >= ptMin && ptSeed <= 2 * (muRef->pt());
std::vector< edm::EDGetTokenT< TrajectorySeedCollection > > seedsTks
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getParameter(std::string const &) const
std::pair< const_iterator, const_iterator > range
FastTSGFromIOHit(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
constructor
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const Margin & phiMargin() const
Geom::Phi< T > phi() const
~FastTSGFromIOHit() override
destructor
std::pair< const Trajectory *, reco::TrackRef > TrackCand
GlobalVector const & direction() const
the direction around which region is constructed
std::vector< TrajectorySeed > TrajectorySeedCollection
const edm::Event * getEvent() const
void trackerSeeds(const TrackCand &, const TrackingRegion &, const TrackerTopology *tTopo, std::vector< TrajectorySeed > &) override
generate seed(s) for a track
virtual int32_t simTrackId(size_t i) const
float ptMin() const
minimal pt of interest
const math::XYZTLorentzVectorD & momentum() const
bool clean(reco::TrackRef muRef, const RectangularEtaPhiTrackingRegion ®ion, const BasicTrajectorySeed *aSeed, const SimTrack &theSimTrack)
edm::EDGetTokenT< edm::SimTrackContainer > simTracksTk
std::vector< SimTrack > SimTrackContainer
const Range & etaRange() const
allowed eta range [eta_min, eta_max] interval