19 if (dynamic_cast<const StripGeomDetUnit*>(gdet) == 0) {
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();
73 std::vector<SiStripRecHit2D>
tmp;
74 if ( rightCluster != detSet.
begin()) {
76 auto leftCluster = rightCluster;
77 while ( --leftCluster >= detSet.
begin()) {
80 if(!isCompatible)
break;
81 for (
auto &&
h: tmp) result.push_back(
new SiStripRecHit2D(std::move(
h))); tmp.clear();
84 for ( ; rightCluster != detSet.
end(); rightCluster++) {
87 if(!isCompatible)
break;
88 for (
auto &&
h: tmp) result.push_back(
new SiStripRecHit2D(std::move(
h))); tmp.clear();
91 return result.size()>oldSize;
99 std::vector<SiStripRecHit2D> &
result)
const {
102 auto oldSize = result.size();
109 if ( rightCluster != detSet.
begin()) {
111 auto leftCluster = rightCluster;
112 while ( --leftCluster >= detSet.
begin()) {
115 if(!isCompatible)
break;
118 for ( ; rightCluster != detSet.
end(); rightCluster++) {
121 if(!isCompatible)
break;
124 return result.size()>oldSize;
134 auto oldSize = result.size();
142 if ( rightCluster != detSet.
begin()) {
144 auto leftCluster = rightCluster;
145 while ( --leftCluster >= detSet.
begin()) {
148 if(!isCompatible)
break;
151 for ( ; rightCluster != detSet.
end(); rightCluster++) {
154 if(!isCompatible)
break;
157 return result.size()>oldSize;
165 LogDebug(
"TkStripMeasurementDet")<<
" found an inactive module "<<
rawId();
171 LogDebug(
"TkStripMeasurementDet")<<
" found hit on this module "<<
rawId();
173 std::vector<float> diffs;
211 result.reserve(detSet.
size());
218 else LogDebug(
"TkStripMeasurementDet")<<
"skipping this str from last iteration on"<<
rawId()<<
" key: "<<cluster.
key();
224 std::tuple<TkStripRecHitIter,TkStripRecHitIter>
235 while (!hi.
empty()) {
240 if (
accept(cluster,
data.stripClustersToSkip()))
return;
249 auto const & ltp = *hi.
tsos;
258 int16_t
start = (int16_t) std::max<float>(utraj - 3.
f*uerr, 0);
259 int16_t
end = (int16_t) std::min<float>(utraj + 3.
f*uerr,
totalStrips());
271 typedef std::vector<BadStripBlock>::const_iterator BSBIT;
273 int16_t
bad = 0, largestBadBlock = 0;
275 if (bsbc->last < start)
continue;
276 if (bsbc->first > end)
break;
278 if (thisBad > largestBadBlock) largestBadBlock = thisBad;
282 bool ok = (bad < (end-
start)) &&
virtual LocalValues localParameters(const SiStripCluster &, const GeomDetUnit &) const
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)
tuple start
Check for commandline option errors.
void buildSimpleRecHit(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p, std::vector< SiStripRecHit2D > &res) const
const StripDetset & detSet(int i) const
const TrajectoryStateOnSurface * tsos
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
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 isMasked(const SiStripCluster &cluster) const
SiStripRecHit2D hit(TkStripRecHitIter const &hi) const
int bad(Items const &cont)
uint16_t maxConsecutiveBad
TrackingRecHit::ConstRecHitPointer theMissingHit
const MeasurementTrackerEvent * data
virtual RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const
virtual bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &data, TempMeasurements &result) const
bool filteredRecHits(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p, const MeasurementEstimator &est, const std::vector< bool > &skipClusters, RecHitContainer &result, std::vector< float > &diffs) const
void add(ConstRecHitPointer const &h, float d)
std::vector< BadStripBlock > const & badStripBlocks() const
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
const LocalTrajectoryError & localError() const
void advance(TkStripRecHitIter &hi) const
TrackingRecHit::RecHitPointer buildRecHit(const ClusterRefT &cluster, const TrajectoryStateOnSurface <p) const
TrackingRecHit::ConstRecHitPointer theInactiveHit
bool isActive(const MeasurementTrackerEvent &data) const
Is this module active in reconstruction? It must be both 'setActiveThisEvent' and 'setActive'...
const StripGeomDetUnit & specificGeomDet() const
bool isEmpty(const StMeasurementDetSet &theDets) const
new_const_iterator clusterI
const StripClusterParameterEstimator * cpe() const
std::vector< std::vector< double > > tmp
TrackingRecHit::ConstRecHitContainer RecHitContainer
std::vector< BaseTrackerRecHit * > SimpleHitContainer
const detset & detSet(const StMeasurementDetSet &theDets) const
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
edm::Handle< edmNew::DetSetVector< SiStripCluster > > & handle()
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)