24 using namespace ctfseeding;
29 theLayerSubDet(subdet), theSide(side), theIdLayer(idLayer),
30 minAbsZ(0), theMinRing(1), theMaxRing(0),
32 hasRingSelector(
false), hasSimpleRphiHitsCleaner(
true)
55 if (
maskCluster && (stripClusterMask->mask(clus.
key())) )
return true;
63 std::pair<bool,ProjectedSiStripRecHit2D *>
69 assert(dynamic_cast<SiStripMatchedRecHit2D const*>(&matched));
76 if ((!rejectSt)&(!rejectMono)){
78 return std::make_pair(
false,replaceMe);
83 return std::make_pair(
true,replaceMe);
88 auto cloner = ttrhBuilder.
cloner();
95 return std::make_pair(
true,replaceMe);
102 unsigned int cleanFrom)
const{
103 LogDebug(
"HitExtractorPIX")<<
"getting: "<<hits.size()<<
" in input.";
106 unsigned int skipped=0;
107 unsigned int projected=0;
108 for (
unsigned int iH=cleanFrom;iH<hits.size();++iH){
109 assert(hits[iH]->isValid());
110 auto id = hits[iH]->geographicalId();
115 LogDebug(
"HitExtractorSTRP")<<
"skipping a matched hit on :"<<hits[iH]->geographicalId().rawId();
118 hits[iH].reset(replaceMe);
120 else assert(hits[iH].isOwn());
123 else if (
skipThis(
id, hits[iH]->firstClusterRef(),stripClusterMask)){
124 LogDebug(
"HitExtractorSTRP")<<
"skipping a hit on :"<<hits[iH]->geographicalId().rawId()<<
" key: ";
130 auto last = std::remove_if(hits.begin()+cleanFrom,hits.end(),[](
HitPointer const &
p) {
return p.empty();});
131 hits.resize(
last-hits.begin());
134 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
std::pair< DetId, DetIdTIDSameDiskComparator > stripTIDDisk(int side, int disk)
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< 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.
T const * product() const
DetId geographicalId() const
volatile std::atomic< bool > shutdown_flag false