72 hmsToken_(consumes<
HMSstorage>(iConfig.getParameter<edm::
InputTag>(
"pixelRecHitLegacySrc"))),
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);
134 auto const *hitsModuleStart = iEvent.
get(
hmsToken_).get();
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);
145 assert(
nullptr == hitmap[i]);
149 std::vector<const TrackingRecHit *> hits;
154 auto const *
quality = tsoa.qualityData();
155 auto const &
fit = tsoa.stateAtBS;
156 auto const &hitIndices = tsoa.hitIndices;
163 for (int32_t it = 0; it <
nTracks; ++it) {
164 auto nHits = tsoa.nHits(it);
166 indToEdm.push_back(-1);
172 indToEdm.back() =
nt;
176 auto b = hitIndices.begin(it);
177 for (
int iHit = 0; iHit <
nHits; ++iHit)
178 hits[iHit] = hitmap[*(
b + iHit)];
182 float chi2 = tsoa.chi2(it);
183 float phi = tsoa.phi(it);
187 fit.copyToDense(ipar, icov, it);
192 for (
int i = 0;
i < 5; ++
i)
193 for (
int j =
i;
j < 5; ++
j)
194 m(
i,
j) = ocov(
i,
j);
207 int ndof = 2 * hits.size() - 5;
217 auto tkq = recoQuality[int(
q)];
218 track->setQuality(tkq);
226 track->setQuality(tkq);
228 tracks.emplace_back(track.release(), hits);
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Quality qualityByName(std::string const &name)
void storeTracks(Ev &ev, const TWH &tracksWithHits, const TrackerTopology &ttopo)
TrackQuality
track quality
LocalPoint position() const
Local x and y position coordinates.
#define DEFINE_FWK_MODULE(type)
Sin< T >::type sin(const T &t)
auto const & tracks
cannot be loose
const edm::EDGetTokenT< SiPixelRecHitCollectionNew > cpuHits_
const edm::EDGetTokenT< HMSstorage > hmsToken_
bool getData(T &iHolder) const
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 GeomDet * det() const
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > ttTopoToken_
Cos< T >::type cos(const T &t)
bool get(ProductID const &oid, Handle< PROD > &result) const
LocalVector momentum() const
Momentum vector in the local frame.
ParameterDescriptionBase * add(U const &iLabel, T const &value)
std::vector< uint16_t > IndToEdm
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_
T getParameter(std::string const &) const
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
TrackCharge charge() const
Charge (-1, 0 or 1)
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.