19 if (dynamic_cast<const StripGeomDetUnit*>(gdet) ==
nullptr) {
20 throw MeasurementDetException(
"TkStripMeasurementDet constructed with a GeomDet which is not a StripGeomDetUnit");
30 for (
auto ci = detSet.
begin(); ci != detSet.
end(); ++ ci ) {
46 result.reserve(detSet.
size());
53 else LogDebug(
"TkStripMeasurementDet")<<
"skipping this str from last iteration on"<<
rawId()<<
" key: "<<cluster.
key();
65 auto oldSize = result.size();
75 std::vector<SiStripRecHit2D>
tmp;
76 if ( rightCluster != detSet.
begin()) {
78 auto leftCluster = rightCluster;
79 while ( --leftCluster >= detSet.
begin()) {
82 if(!isCompatible)
break;
87 for ( ; rightCluster != detSet.
end(); rightCluster++) {
90 if(!isCompatible)
break;
95 return result.size()>oldSize;
103 std::vector<SiStripRecHit2D> &
result)
const {
106 auto oldSize = result.size();
115 if ( rightCluster != detSet.
begin()) {
117 auto leftCluster = rightCluster;
118 while ( --leftCluster >= detSet.
begin()) {
121 if(!isCompatible)
break;
124 for ( ; rightCluster != detSet.
end(); rightCluster++) {
127 if(!isCompatible)
break;
130 return result.size()>oldSize;
140 auto oldSize = result.size();
149 if ( rightCluster != detSet.
begin()) {
151 auto leftCluster = rightCluster;
152 while ( --leftCluster >= detSet.
begin()) {
155 if(!isCompatible)
break;
158 for ( ; rightCluster != detSet.
end(); rightCluster++) {
161 if(!isCompatible)
break;
164 return result.size()>oldSize;
172 LogDebug(
"TkStripMeasurementDet")<<
" found an inactive module "<<
rawId();
178 LogDebug(
"TkStripMeasurementDet")<<
" found hit on this module "<<
rawId();
180 std::vector<float> diffs;
220 for (
auto const & ci : detSet) {
224 else LogDebug(
"TkStripMeasurementDet")<<
"skipping this str from last iteration on"<<
rawId()<<
" key: "<<detSet.makeKeyOf(&ci);
232 std::tuple<TkStripRecHitIter,TkStripRecHitIter>
243 while (!hi.
empty()) {
248 if (
accept(cluster,
data.stripClustersToSkip()))
return;
257 auto const & ltp = *hi.
tsos;
266 int16_t
start = (int16_t) std::max<float>(utraj - 3.
f*uerr, 0);
267 int16_t
end = (int16_t) std::min<float>(utraj + 3.
f*uerr,
totalStrips());
279 typedef std::vector<BadStripBlock>::const_iterator BSBIT;
281 int16_t bad = 0, largestBadBlock = 0;
283 if (bsbc->last < start)
continue;
284 if (bsbc->first > end)
break;
286 if (thisBad > largestBadBlock) largestBadBlock = thisBad;
290 bool ok = (bad < (end-
start)) &&
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
const StripDetset & detSet(int i) const
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
const TrajectoryStateOnSurface * tsos
const LocalTrajectoryParameters & localParameters() const
std::tuple< TkStripRecHitIter, TkStripRecHitIter > hitRange(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const
bool isActive(const MeasurementTrackerEvent &data) const override
Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'...
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
key_type key() const
Accessor for product key.
bool accept(SiStripClusterRef const &r, const std::vector< bool > &skipClusters) const
StripClusterParameterEstimator::LocalValues localParameters(const SiStripCluster &cl, const GeomDetUnit &) const override
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 isMasked(const SiStripCluster &cluster) const
SiStripRecHit2D hit(TkStripRecHitIter const &hi) const
uint16_t maxConsecutiveBad
TrackingRecHit::ConstRecHitPointer theMissingHit
const MeasurementTrackerEvent * data
const StripCPE * cpe() const
RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const override
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
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
std::vector< std::vector< double > > tmp
TrackingRecHit::ConstRecHitContainer RecHitContainer
std::vector< BaseTrackerRecHit * > SimpleHitContainer
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
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)
bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &data, TempMeasurements &result) const override