25 using namespace ctfseeding;
30 theLayerSubDet(subdet), theSide(side), theIdLayer(idLayer),
31 minAbsZ(0), theMinRing(1), theMaxRing(0),
33 hasRingSelector(
false), hasSimpleRphiHitsCleaner(
true)
55 return stripClusterMask->mask(clus.
key());
60 std::pair<bool,ProjectedSiStripRecHit2D *>
66 assert(dynamic_cast<SiStripMatchedRecHit2D const*>(&matched));
72 if ((!rejectSt)&(!rejectMono)){
74 return std::make_pair(
false,replaceMe);
79 return std::make_pair(
true,replaceMe);
84 auto cloner = ttrhBuilder.
cloner();
91 return std::make_pair(
true,replaceMe);
98 unsigned int cleanFrom)
const{
99 LogDebug(
"HitExtractorPIX")<<
"getting: "<<hits.size()<<
" in input.";
102 unsigned int skipped=0;
103 unsigned int projected=0;
104 for (
unsigned int iH=cleanFrom;iH<hits.size();++iH){
105 assert(hits[iH]->isValid());
110 LogDebug(
"HitExtractorSTRP")<<
"skipping a matched hit on :"<<hits[iH]->geographicalId().rawId();
113 hits[iH].reset(replaceMe);
114 if (replaceMe==
nullptr) assert(hits[iH].
empty());
115 else assert(hits[iH].isOwn());
118 else if (
skipThis(hits[iH]->firstClusterRef(),stripClusterMask)){
119 LogDebug(
"HitExtractorSTRP")<<
"skipping a hit on :"<<hits[iH]->geographicalId().rawId()<<
" key: ";
125 auto last = std::remove_if(hits.begin()+cleanFrom,hits.end(),[](
HitPointer const &
p) {
return p.empty();});
126 hits.resize(
last-hits.begin());
129 LogDebug(
"HitExtractorSTRP")<<
"skipped :"<<skipped<<
" strip rechits because of clusters and projected: "<<projected;
136 unsigned int cleanFrom=0;
185 result.emplace_back(*
hit);
200 result.emplace_back(*
hit);
214 result.emplace_back(*
hit);
233 if (fabs(
hit->globalPosition().
z())>=
minAbsZ) result.emplace_back(*
hit);
278 result.emplace_back(*
hit);
293 result.emplace_back(*
hit);
308 result.emplace_back(*
hit);
320 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
std::pair< DetId, DetIdTIDSameDiskComparator > stripTIDDisk(int side, int disk)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
TkClonerImpl cloner() const
OmniClusterRef const & stereoClusterRef() const
std::pair< DetId, DetIdTIBSameLayerComparator > stripTIBLayer(int layer)
std::pair< const_iterator, const_iterator > Range
uint32_t rawId() const
get the raw id
std::pair< DetId, DetIdTOBSameLayerComparator > stripTOBLayer(int layer)
std::pair< DetId, DetIdTECSameDiskComparator > stripTECDisk(int side, int disk)
OmniClusterRef const & monoClusterRef() const
Detector identifier class for the strip tracker.
DetId geographicalId() const
volatile std::atomic< bool > shutdown_flag false