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();
75 std::vector<SiStripRecHit2D>
tmp;
76 if ( rightCluster != detSet.
begin()) {
78 auto leftCluster = rightCluster;
79 while ( --leftCluster >= detSet.
begin()) {
82 if(!isCompatible)
break;
86 for ( ; rightCluster != detSet.
end(); rightCluster++) {
89 if(!isCompatible)
break;
93 return result.size()>oldSize;
101 std::vector<SiStripRecHit2D> &
result)
const {
104 auto oldSize = result.size();
113 if ( rightCluster != detSet.
begin()) {
115 auto leftCluster = rightCluster;
116 while ( --leftCluster >= detSet.
begin()) {
119 if(!isCompatible)
break;
122 for ( ; rightCluster != detSet.
end(); rightCluster++) {
125 if(!isCompatible)
break;
128 return result.size()>oldSize;
138 auto oldSize = result.size();
147 if ( rightCluster != detSet.
begin()) {
149 auto leftCluster = rightCluster;
150 while ( --leftCluster >= detSet.
begin()) {
153 if(!isCompatible)
break;
156 for ( ; rightCluster != detSet.
end(); rightCluster++) {
159 if(!isCompatible)
break;
162 return result.size()>oldSize;
170 LogDebug(
"TkStripMeasurementDet")<<
" found an inactive module "<<
rawId();
176 LogDebug(
"TkStripMeasurementDet")<<
" found hit on this module "<<
rawId();
178 std::vector<float> diffs;
218 for (
auto const & ci : detSet) {
222 else LogDebug(
"TkStripMeasurementDet")<<
"skipping this str from last iteration on"<<
rawId()<<
" key: "<<detSet.makeKeyOf(&ci);
230 std::tuple<TkStripRecHitIter,TkStripRecHitIter>
241 while (!hi.
empty()) {
246 if (
accept(cluster,
data.stripClustersToSkip()))
return;
255 auto const & ltp = *hi.
tsos;
264 int16_t
start = (int16_t) std::max<float>(utraj - 3.
f*uerr, 0);
265 int16_t
end = (int16_t) std::min<float>(utraj + 3.
f*uerr,
totalStrips());
277 typedef std::vector<BadStripBlock>::const_iterator BSBIT;
279 int16_t bad = 0, largestBadBlock = 0;
281 if (bsbc->last < start)
continue;
282 if (bsbc->first > end)
break;
284 if (thisBad > largestBadBlock) largestBadBlock = thisBad;
288 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)
tuple start
Check for commandline option errors.
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 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
uint16_t maxConsecutiveBad
TrackingRecHit::ConstRecHitPointer theMissingHit
const MeasurementTrackerEvent * data
virtual RecHitContainer recHits(const TrajectoryStateOnSurface &, const MeasurementTrackerEvent &data) const
const StripCPE * cpe() const
virtual bool measurements(const TrajectoryStateOnSurface &stateOnThisDet, const MeasurementEstimator &est, const MeasurementTrackerEvent &data, TempMeasurements &result) 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
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
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)