36 template <
typename TrackerTraits>
57 template <
typename TrackerTraits>
60 tokenTrack_(consumes(iConfig.getParameter<
edm::
InputTag>(
"src"))),
64 minNumberOfHits_(iConfig.getParameter<
int>(
"minNumberOfHits"))
67 produces<TrajectorySeedCollection>();
70 template <
typename TrackerTraits>
75 desc.add<
int>(
"minNumberOfHits", 0);
80 template <
typename TrackerTraits>
85 auto result = std::make_unique<TrajectorySeedCollection>();
89 auto const& fieldESH = iSetup.
getHandle(idealMagneticFieldToken_);
91 auto const& dus =
tracker->detUnits();
93 auto const& propagatorHandle = iSetup.
getHandle(trackerPropagatorToken_);
96 const auto& bsh =
iEvent.get(tBeamSpot_);
100 auto const& tsoa =
iEvent.get(tokenTrack_);
102 auto const*
quality = tsoa.view().quality();
103 auto const& detIndices = tsoa.view().detIndices();
104 auto maxTracks = tsoa.view().metadata().size();
106 for (int32_t it = 0; it <
maxTracks; ++it) {
114 if (
nHits < minNumberOfHits_)
118 auto b = detIndices.begin(it);
120 for (
int iHit = 0; iHit <
nHits; ++iHit) {
121 auto const* det = dus[*(
b + iHit)];
132 trackHelper::copyToDense(tsoa.view(), ipar, icov, it);
137 for (
int i = 0;
i < 5; ++
i)
138 for (
int j =
i;
j < 5; ++
j)
139 m(
i,
j) = ocov(
i,
j);
157 auto const& lastHit =
hits.back();
162 edm::LogError(
"SeedFromGPU") <<
" was trying to create a seed from:\n" 163 << fts <<
"\n propagating to: " << lastHit.geographicalId().rawId();
const edm::ESGetToken< Propagator, TrackingComponentsRecord > trackerPropagatorToken_
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
Sin< T >::type sin(const T &t)
const edm::EDGetTokenT< reco::BeamSpot > tBeamSpot_
Log< level::Error, false > LogError
Eigen::Matrix< double, 5, 1 > Vector5d
__host__ __device__ void transformToPerigeePlane(VI5 const &ip, MI5 const &icov, VO5 &op, MO5 &ocov)
LocalVector momentum() const
Momentum vector in the local frame.
Cos< T >::type cos(const T &t)
#define DEFINE_FWK_MODULE(type)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
TrackCharge charge() const
Charge (-1, 0 or 1)
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
void produce(edm::StreamID streamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const override
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > idealMagneticFieldToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > trackerDigiGeometryToken_
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
~SeedProducerFromSoAT() override=default
Eigen::Matrix< double, 5, 5 > Matrix5d
TupleMultiplicity< TrackerTraits > const *__restrict__ uint32_t nHits
SeedProducerFromSoAT(const edm::ParameterSet &iConfig)
LocalPoint position() const
Local x and y position coordinates.
const edm::EDGetTokenT< TrackSoAHeterogeneousHost< TrackerTraits > > tokenTrack_