17 :
MeasurementDet(gdet), index_(-1), theDetConditions(&conditions) {
18 if (dynamic_cast<const StripGeomDetUnit*>(gdet) ==
nullptr) {
19 throw MeasurementDetException(
"TkStripMeasurementDet constructed with a GeomDet which is not a StripGeomDetUnit");
29 for (
auto ci = detSet.
begin(); ci != detSet.
end(); ++ci) {
45 result.reserve(detSet.
size());
54 LogDebug(
"TkStripMeasurementDet") <<
"skipping this str from last iteration on" <<
rawId()
55 <<
" key: " << cluster.
key();
67 auto oldSize = result.size();
73 auto rightCluster = std::find_if(
76 std::vector<SiStripRecHit2D>
tmp;
77 if (rightCluster != detSet.
begin()) {
79 auto leftCluster = rightCluster;
80 while (--leftCluster >= detSet.
begin()) {
90 for (; rightCluster != detSet.
end(); rightCluster++) {
100 return result.size() > oldSize;
106 std::vector<SiStripRecHit2D>&
result)
const {
110 auto oldSize = result.size();
116 auto rightCluster = std::find_if(
119 if (rightCluster != detSet.
begin()) {
121 auto leftCluster = rightCluster;
122 while (--leftCluster >= detSet.
begin()) {
129 for (; rightCluster != detSet.
end(); rightCluster++) {
136 return result.size() > oldSize;
143 std::vector<float>& diffs)
const {
147 auto oldSize = result.size();
153 auto rightCluster = std::find_if(
156 if (rightCluster != detSet.
begin()) {
158 auto leftCluster = rightCluster;
159 while (--leftCluster >= detSet.
begin()) {
167 for (; rightCluster != detSet.
end(); rightCluster++) {
175 return result.size() > oldSize;
183 LogDebug(
"TkStripMeasurementDet") <<
" found an inactive module " <<
rawId();
189 LogDebug(
"TkStripMeasurementDet") <<
" found hit on this module " <<
rawId();
191 std::vector<float> diffs;
221 std::vector<SiStripRecHit2D>&
result)
const {
228 for (
auto const& ci : detSet) {
234 LogDebug(
"TkStripMeasurementDet") <<
"skipping this str from last iteration on" <<
rawId()
235 <<
" key: " << detSet.makeKeyOf(&ci);
244 return std::tuple<TkStripRecHitIter, TkStripRecHitIter>();
251 while (!hi.
empty()) {
257 if (
accept(cluster,
data.stripClustersToSkip()))
267 auto const& ltp = *hi.
tsos;
275 int16_t
start = (int16_t)std::max<float>(utraj - 3.
f * uerr, 0);
276 int16_t
end = (int16_t)std::min<float>(utraj + 3.
f * uerr,
totalStrips());
288 typedef std::vector<BadStripBlock>::const_iterator BSBIT;
290 int16_t bad = 0, largestBadBlock = 0;
292 if (bsbc->last < start)
294 if (bsbc->first > end)
297 if (thisBad > largestBadBlock)
298 largestBadBlock = thisBad;
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(const HandleT &iHandle, typename HandleT::element_type::value_type::const_iterator itIter)
bool filteredRecHits(const ClusterRefT &cluster, StripCPE::AlgoParam const &cpepar, const TrajectoryStateOnSurface <p, const MeasurementEstimator &est, const std::vector< bool > &skipClusters, RecHitContainer &result, std::vector< float > &diffs) const
bool isActive(const MeasurementTrackerEvent &data) const override
Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'...
const StripDetset & detSet(int i) const
const TrajectoryStateOnSurface * tsos
const LocalTrajectoryParameters & localParameters() const
std::tuple< TkStripRecHitIter, TkStripRecHitIter > hitRange(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const
bool empty(const MeasurementTrackerEvent &data) const
LocalPoint localPosition() const
StripClusterParameterEstimator::LocalValues LocalValues
TkStripMeasurementDet(const GeomDet *gdet, StMeasurementConditionSet &conditionSet)
BadStripCuts const & badStripCuts() const
void simpleRecHits(const TrajectoryStateOnSurface &ts, const MeasurementTrackerEvent &data, std::vector< SiStripRecHit2D > &result) const
RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const override
key_type key() const
Accessor for product key.
bool accept(SiStripClusterRef const &r, const std::vector< bool > &skipClusters) const
const StMeasurementDetSet & stripData() const
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
const std::vector< bool > & stripClustersToSkip() const
LocalError positionError() const
bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &data, TempMeasurements &result) const override
bool isMasked(const SiStripCluster &cluster) const
SiStripRecHit2D hit(TkStripRecHitIter const &hi) const
uint16_t maxConsecutiveBad
TrackingRecHit::ConstRecHitPointer theMissingHit
const MeasurementTrackerEvent * data
const StripCPE * cpe() const
void add(ConstRecHitPointer const &h, float d)
std::vector< BadStripBlock > const & badStripBlocks() const
#define unInitDynArray(T, n, x)
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
const LocalTrajectoryError & localError() const
AlgoParam getAlgoParam(const GeomDetUnit &det, const LocalTrajectoryParameters <p) const
void advance(TkStripRecHitIter &hi) const
StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster &cl, const GeomDetUnit &) const override
TrackingRecHit::RecHitPointer buildRecHit(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p) const
TrackingRecHit::ConstRecHitPointer theInactiveHit
const StripGeomDetUnit & specificGeomDet() const
bool isEmpty(const StMeasurementDetSet &theDets) const
new_const_iterator clusterI
TrackingRecHit::ConstRecHitContainer RecHitContainer
const detset & detSet(const StMeasurementDetSet &theDets) const
char data[epos_bytes_allocation]
detset::const_iterator new_const_iterator
bool testStrips(float utraj, float uerr) const
return true if there are 'enough' good strips in the utraj +/- 3 uerr range.
unsigned int rawId() const
void buildSimpleRecHits(AClusters const &clusters, const MeasurementTrackerEvent &data, const detset &detSet, const TrajectoryStateOnSurface <p, std::vector< SiStripRecHit2D > &res) const
std::vector< BaseTrackerRecHit * > SimpleHitContainer
edm::Handle< edmNew::DetSetVector< SiStripCluster > > & handle()
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(HandleT const &handle, const_iterator ci) const
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.