75 minNumberOfHits_(iConfig.getParameter<
int>(
"minNumberOfHits")),
85 produces<reco::TrackCollection>();
86 produces<TrackingRecHitCollection>();
87 produces<reco::TrackExtraCollection>();
96 desc.add<
int>(
"minNumberOfHits", 0);
116 auto indToEdmP = std::make_unique<IndToEdm>();
117 auto &indToEdm = *indToEdmP;
129 std::vector<TrackingRecHit const *> hitmap;
130 auto const &rcs =
rechits.data();
131 auto nhits = rcs.size();
132 hitmap.resize(
nhits,
nullptr);
135 auto fc = hitsModuleStart;
137 for (
auto const &
h : rcs) {
140 auto const &clus = thit.firstClusterRef();
142 auto i = fc[detI] + clus.pixelCluster().originalId();
143 if (
i >= hitmap.size())
144 hitmap.resize(
i + 256,
nullptr);
149 std::vector<const TrackingRecHit *>
hits;
154 auto const *
quality = tsoa.qualityData();
155 auto const &
fit = tsoa.stateAtBS;
156 auto const &hitIndices = tsoa.hitIndices;
164 std::vector<int32_t> sortIdxs(
nTracks);
165 std::iota(sortIdxs.begin(), sortIdxs.end(), 0);
167 sortIdxs.begin(), sortIdxs.end(), [&](int32_t
const i1, int32_t
const i2) {
return tsoa.pt(
i1) > tsoa.pt(
i2); });
170 indToEdm.resize(sortIdxs.size(), -1);
171 for (
const auto &it : sortIdxs) {
172 auto nHits = tsoa.nHits(it);
183 auto b = hitIndices.begin(it);
184 for (
int iHit = 0; iHit <
nHits; ++iHit)
185 hits[iHit] = hitmap[*(
b + iHit)];
189 float chi2 = tsoa.chi2(it);
190 float phi = tsoa.phi(it);
194 fit.copyToDense(ipar, icov, it);
199 for (
int i = 0;
i < 5; ++
i)
200 for (
int j =
i;
j < 5; ++
j)
201 m(
i,
j) = ocov(
i,
j);
224 auto tkq = recoQuality[
int(
q)];
225 track->setQuality(tkq);
233 track->setQuality(tkq);
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
T getParameter(std::string const &) const
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Quality qualityByName(std::string const &name)
void storeTracks(Ev &ev, const TWH &tracksWithHits, const TrackerTopology &ttopo)
TrackQuality
track quality
#define DEFINE_FWK_MODULE(type)
Sin< T >::type sin(const T &t)
const edm::EDGetTokenT< SiPixelRecHitCollectionNew > cpuHits_
const GeomDet * det() const
const edm::EDGetTokenT< HMSstorage > hmsToken_
int32_t const minNumberOfHits_
Eigen::Matrix< double, 5, 1 > Vector5d
__host__ __device__ void transformToPerigeePlane(VI5 const &ip, MI5 const &icov, VO5 &op, MO5 &ocov)
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > ttTopoToken_
LocalVector momentum() const
Momentum vector in the local frame.
Cos< T >::type cos(const T &t)
bool getData(T &iHolder) const
std::vector< uint16_t > IndToEdm
TrackCharge charge() const
Charge (-1, 0 or 1)
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
auto const & tracks
cannot be loose
void produce(edm::StreamID streamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const override
XYZVectorD XYZVector
spatial vector with cartesian internal representation
XYZPointD XYZPoint
point in space with cartesian internal representation
const edm::EDGetTokenT< reco::BeamSpot > tBeamSpot_
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
PixelTrackProducerFromSoA(const edm::ParameterSet &iConfig)
~PixelTrackProducerFromSoA() override=default
Eigen::Matrix< double, 5, 5 > Matrix5d
const edm::EDGetTokenT< PixelTrackHeterogeneous > tokenTrack_
std::vector< TrackWithRecHits > TracksWithRecHits
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > idealMagneticFieldToken_
pixelTrack::Quality const minQuality_
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
LocalPoint position() const
Local x and y position coordinates.