18 if (dynamic_cast<const StripGeomDetUnit*>(gdet) ==
nullptr) {
19 throw MeasurementDetException(
"TkStripMeasurementDet constructed with a GeomDet which is not a StripGeomDetUnit");
33 if (
accept(cluster,
data.stripClustersToSkip()))
51 if (
accept(cluster,
data.stripClustersToSkip()))
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;
79 auto leftCluster = rightCluster;
82 bool isCompatible =
filteredRecHits(clusterref, cpepar, stateOnThisDet, est,
data.stripClustersToSkip(),
tmp);
90 for (; rightCluster !=
detSet.
end(); rightCluster++) {
92 bool isCompatible =
filteredRecHits(clusterref, cpepar, stateOnThisDet, est,
data.stripClustersToSkip(),
tmp);
100 return result.size() > oldSize;
106 std::vector<SiStripRecHit2D>&
result)
const {
110 auto oldSize =
result.size();
116 auto rightCluster = std::find_if(
121 auto leftCluster = rightCluster;
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(
158 auto leftCluster = rightCluster;
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()
244 return std::tuple<TkStripRecHitIter, TkStripRecHitIter>();
251 while (!
hi.empty()) {
252 auto ci =
hi.clusterI;
253 auto const&
data = *
hi.data;
257 if (
accept(cluster,
data.stripClustersToSkip()))
265 auto ci =
hi.clusterI;
266 auto const&
data = *
hi.data;
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 isActive(const MeasurementTrackerEvent &data) const override
Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'...
edm::Ref< typename HandleT::element_type, typename HandleT::element_type::value_type::value_type > makeRefTo(HandleT const &handle, const_iterator ci) const
BadStripCuts const & badStripCuts() const
bool testStrips(float utraj, float uerr) const
return true if there are 'enough' good strips in the utraj +/- 3 uerr range.
const StripGeomDetUnit & specificGeomDet() const
const LocalTrajectoryError & localError() const
LocalPoint localPosition() const
unsigned int rawId() const
StripClusterParameterEstimator::LocalValues LocalValues
void buildSimpleRecHits(AClusters const &clusters, const MeasurementTrackerEvent &data, const detset &detSet, const TrajectoryStateOnSurface <p, std::vector< SiStripRecHit2D > &res) const
TkStripMeasurementDet(const GeomDet *gdet, StMeasurementConditionSet &conditionSet)
const StripCPE * cpe() const
std::tuple< TkStripRecHitIter, TkStripRecHitIter > hitRange(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const
const LocalTrajectoryParameters & localParameters() const
unsigned int makeKeyOf(const_iterator ci) const
RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const override
void simpleRecHits(const TrajectoryStateOnSurface &ts, const MeasurementTrackerEvent &data, std::vector< SiStripRecHit2D > &result) const
LocalError positionError() const
bool isEmpty(const StMeasurementDetSet &theDets) const
key_type key() const
Accessor for product key.
bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &data, TempMeasurements &result) const override
std::vector< BadStripBlock > const & badStripBlocks() const
uint16_t maxConsecutiveBad
TrackingRecHit::ConstRecHitPointer theMissingHit
AlgoParam getAlgoParam(const GeomDetUnit &det, const LocalTrajectoryParameters <p) const
bool accept(SiStripClusterRef const &r, const std::vector< bool > &skipClusters) const
#define unInitDynArray(T, n, x)
virtual const StripTopology & specificTopology() const
Returns a reference to the strip proxy topology.
void advance(TkStripRecHitIter &hi) const
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
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
StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster &cl, const GeomDetUnit &) const override
bool isMasked(const SiStripCluster &cluster) const
TrackingRecHit::RecHitPointer buildRecHit(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p) const
TrackingRecHit::ConstRecHitPointer theInactiveHit
const detset & detSet(const StMeasurementDetSet &theDets) const
TrackingRecHit::ConstRecHitContainer RecHitContainer
char data[epos_bytes_allocation]
detset::const_iterator new_const_iterator
SiStripRecHit2D hit(TkStripRecHitIter const &hi) const
bool empty(const MeasurementTrackerEvent &data) const
std::vector< BaseTrackerRecHit * > SimpleHitContainer
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.