CMS 3D CMS Logo

HitExtractorSTRP.h
Go to the documentation of this file.
1 #ifndef RecoTracker_TkSeedingLayers_HitExtractorSTRP_H
2 #define RecoTracker_TkSeedingLayers_HitExtractorSTRP_H
3 
6 #include "HitExtractor.h"
7 
14 
15 #include <vector>
16 #include <tuple>
17 class DetLayer;
18 
19 namespace edm {
20  template <typename T>
21  class ContainerMask;
22 }
23 
24 namespace ctfseeding {
25 
26  class HitExtractorSTRP final : public HitExtractor {
27  public:
29 
32  int idLayer,
33  float iminGoodCharge,
35  ~HitExtractorSTRP() override {}
36 
38  const edm::Event&,
39  const edm::EventSetup&) const override;
40  HitExtractorSTRP* clone() const override { return new HitExtractorSTRP(*this); }
41 
43  hasMatchedHits = true;
45  }
47  hasRPhiHits = true;
49  }
51  hasStereoHits = true;
53  }
54 
56  hasVectorHits = true;
58  }
59  void useRingSelector(int minRing, int maxRing);
61 
63  const edm::Event& ev,
65  bool matched,
66  unsigned int cleanFrom = 0) const;
67 
68  std::pair<bool, ProjectedSiStripRecHit2D*> skipThis(
69  const TkTransientTrackingRecHitBuilder& ttrhBuilder,
72 
73  bool skipThis(DetId id,
74  OmniClusterRef const& clus,
76 
77  void setNoProjection() { failProjection = true; }
78  void setMinAbsZ(double minZToSet) { minAbsZ = minZToSet; }
79 
80  bool useRingSelector() const { return hasRingSelector; }
81  std::tuple<int, int> getMinMaxRing() const { return std::make_tuple(theMinRing, theMaxRing); }
82 
83  private:
84  bool ringRange(int ring) const;
85 
88  void useSkipClusters_(const edm::InputTag& m, edm::ConsumesCollector& iC) override;
89 
90  private:
94  double minAbsZ;
110  };
111 
112 } // namespace ctfseeding
113 #endif
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::tuple< int, int > getMinMaxRing() const
HitExtractorSTRP * clone() const override
edm::EDGetTokenT< SkipPhase2ClustersCollection > theSkipPhase2Clusters
std::vector< HitPointer > Hits
Definition: HitExtractor.h:28
void useStereoHits(const edm::InputTag &m, edm::ConsumesCollector &iC)
void useMatchedHits(const edm::InputTag &m, edm::ConsumesCollector &iC)
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > theTtopo
TrackerDetSide
Definition: TrackerDetSide.h:4
std::pair< bool, ProjectedSiStripRecHit2D * > skipThis(const TkTransientTrackingRecHitBuilder &ttrhBuilder, TkHitRef matched, edm::Handle< edm::ContainerMask< edmNew::DetSetVector< SiStripCluster > > > &stripClusterMask) const
BaseTrackerRecHit const & TkHitRef
Definition: HitExtractor.h:26
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > theMatchedHits
const GeomDetEnumerators::SubDetector theLayerSubDet
edm::EDGetTokenT< SiStripRecHit2DCollection > theStereoHits
void useRPhiHits(const edm::InputTag &m, edm::ConsumesCollector &iC)
edm::ContainerMask< edmNew::DetSetVector< SiStripCluster > > SkipClustersCollection
edm::EDGetTokenT< VectorHitCollection > theVectorHits
void useVectorHits(const edm::InputTag &m, edm::ConsumesCollector &iC)
HitExtractor::Hits hits(const TkTransientTrackingRecHitBuilder &ttrhBuilder, const edm::Event &, const edm::EventSetup &) const override
bool ringRange(int ring) const
Definition: DetId.h:17
void useSimpleRphiHitsCleaner(bool use)
edm::EDGetTokenT< SiStripRecHit2DCollection > theRPhiHits
HitExtractorSTRP(GeomDetEnumerators::SubDetector subdet, TrackerDetSide side, int idLayer, float iminGoodCharge, edm::ConsumesCollector &iC)
edm::ContainerMask< Phase2TrackerCluster1DCollectionNew > SkipPhase2ClustersCollection
HLT enums.
void cleanedOfClusters(const TkTransientTrackingRecHitBuilder &ttrhBuilder, const edm::Event &ev, HitExtractor::Hits &hits, bool matched, unsigned int cleanFrom=0) const
SiStripRecHit2D::ClusterRef SiStripClusterRef
void setMinAbsZ(double minZToSet)
void useSkipClusters_(const edm::InputTag &m, edm::ConsumesCollector &iC) override
edm::EDGetTokenT< SkipClustersCollection > theSkipClusters