26 using namespace ctfseeding;
31 theLayerSubDet(subdet), theSide(side), theIdLayer(idLayer),
32 minAbsZ(0), theMinRing(1), theMaxRing(0),
34 hasRingSelector(
false), hasSimpleRphiHitsCleaner(
true)
57 if (
maskCluster && (stripClusterMask->mask(clus.
key())) )
return true;
65 std::pair<bool,ProjectedSiStripRecHit2D *>
71 assert(dynamic_cast<SiStripMatchedRecHit2D const*>(&matched));
78 if ((!rejectSt)&(!rejectMono)){
80 return std::make_pair(
false,replaceMe);
85 return std::make_pair(
true,replaceMe);
90 auto cloner = ttrhBuilder.
cloner();
97 return std::make_pair(
true,replaceMe);
104 unsigned int cleanFrom)
const{
105 LogDebug(
"HitExtractorPIX")<<
"getting: "<<hits.size()<<
" in input.";
108 unsigned int skipped=0;
109 unsigned int projected=0;
110 for (
unsigned int iH=cleanFrom;iH<hits.size();++iH){
111 assert(hits[iH]->isValid());
112 auto id = hits[iH]->geographicalId();
117 LogDebug(
"HitExtractorSTRP")<<
"skipping a matched hit on :"<<hits[iH]->geographicalId().rawId();
120 hits[iH].reset(replaceMe);
121 if (replaceMe==
nullptr) assert(hits[iH].
empty());
122 else assert(hits[iH].isOwn());
125 else if (
skipThis(
id, hits[iH]->firstClusterRef(),stripClusterMask)){
126 LogDebug(
"HitExtractorSTRP")<<
"skipping a hit on :"<<hits[iH]->geographicalId().rawId()<<
" key: ";
132 auto last = std::remove_if(hits.begin()+cleanFrom,hits.end(),[](
HitPointer const &
p) {
return p.empty();});
133 hits.resize(
last-hits.begin());
136 LogDebug(
"HitExtractorSTRP")<<
"skipped :"<<skipped<<
" strip rechits because of clusters and projected: "<<projected;
143 unsigned int cleanFrom=0;
192 result.emplace_back(*
hit);
207 result.emplace_back(*
hit);
221 result.emplace_back(*
hit);
240 if (fabs(
hit->globalPosition().
z())>=
minAbsZ) result.emplace_back(*
hit);
285 result.emplace_back(*
hit);
300 result.emplace_back(*
hit);
315 result.emplace_back(*
hit);
322 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)
ClusterStripRef cluster_strip() const
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