25 using namespace ctfseeding;
30 theLayerSubDet(subdet), theSide(side), theIdLayer(idLayer),
31 minAbsZ(0), theMinRing(1), theMaxRing(0),
33 hasRingSelector(
false), hasSimpleRphiHitsCleaner(
true)
56 if (
maskCluster && (stripClusterMask->mask(clus.
key())) )
return true;
64 std::pair<bool,ProjectedSiStripRecHit2D *>
70 assert(dynamic_cast<SiStripMatchedRecHit2D const*>(&matched));
77 if ((!rejectSt)&(!rejectMono)){
79 return std::make_pair(
false,replaceMe);
84 return std::make_pair(
true,replaceMe);
89 auto cloner = ttrhBuilder.
cloner();
96 return std::make_pair(
true,replaceMe);
103 unsigned int cleanFrom)
const{
104 LogDebug(
"HitExtractorPIX")<<
"getting: "<<hits.size()<<
" in input.";
107 unsigned int skipped=0;
108 unsigned int projected=0;
109 for (
unsigned int iH=cleanFrom;iH<hits.size();++iH){
110 assert(hits[iH]->isValid());
111 auto id = hits[iH]->geographicalId();
116 LogDebug(
"HitExtractorSTRP")<<
"skipping a matched hit on :"<<hits[iH]->geographicalId().rawId();
119 hits[iH].reset(replaceMe);
121 else assert(hits[iH].isOwn());
124 else if (
skipThis(
id, hits[iH]->firstClusterRef(),stripClusterMask)){
125 LogDebug(
"HitExtractorSTRP")<<
"skipping a hit on :"<<hits[iH]->geographicalId().rawId()<<
" key: ";
131 auto last = std::remove_if(hits.begin()+cleanFrom,hits.end(),[](
HitPointer const &
p) {
return p.empty();});
132 hits.resize(
last-hits.begin());
135 LogDebug(
"HitExtractorSTRP")<<
"skipped :"<<skipped<<
" strip rechits because of clusters and projected: "<<projected;
141 unsigned int cleanFrom=0;
196 result.emplace_back(*
hit);
211 result.emplace_back(*
hit);
225 result.emplace_back(*
hit);
244 if (fabs(
hit->globalPosition().
z())>=
minAbsZ) result.emplace_back(*
hit);
289 result.emplace_back(*
hit);
304 result.emplace_back(*
hit);
319 result.emplace_back(*
hit);
326 LogDebug(
"HitExtractorSTRP")<<
" giving: "<<result.size()<<
" out";
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
void range2SeedingHits(DSTV const &dstv, HitExtractor::Hits &v, std::pair< A, B > const &sel)
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
unsigned int tidRing(const DetId &id) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
TkClonerImpl cloner() const
OmniClusterRef const & stereoClusterRef() const
unsigned int tecRing(const DetId &id) const
ring id
std::pair< const_iterator, const_iterator > Range
std::pair< DetId, SameLayerComparator > tidDetIdWheelComparator(uint32_t side, uint32_t wheel) const
uint32_t rawId() const
get the raw id
std::pair< DetId, SameLayerComparator > tobDetIdLayerComparator(uint32_t layer) const
std::pair< DetId, SameLayerComparator > tibDetIdLayerComparator(uint32_t layer) const
ClusterStripRef cluster_strip() const
OmniClusterRef const & monoClusterRef() const
std::pair< DetId, SameLayerComparator > tecDetIdWheelComparator(uint32_t side, uint32_t wheel) const
Detector identifier class for the strip tracker.
T const * product() const
DetId geographicalId() const
volatile std::atomic< bool > shutdown_flag false