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 
11 
12 #include <vector>
13 #include <tuple>
14 class DetLayer;
15 
16 namespace edm {
17  template< typename T> class ContainerMask;
18 }
19 
20 namespace ctfseeding {
21 
22 class HitExtractorSTRP final : public HitExtractor {
23 
24 public:
26 
27  HitExtractorSTRP(GeomDetEnumerators::SubDetector subdet, SeedingLayer::Side & side, int idLayer, float iminGoodCharge);
28  virtual ~HitExtractorSTRP(){}
29 
30  virtual HitExtractor::Hits hits( const TkTransientTrackingRecHitBuilder &ttrhBuilder, const edm::Event& , const edm::EventSetup&) const override;
31  virtual HitExtractorSTRP * clone() const override { return new HitExtractorSTRP(*this); }
32 
33  void useMatchedHits( const edm::InputTag & m, edm::ConsumesCollector& iC) { hasMatchedHits = true; theMatchedHits = iC.consumes<SiStripMatchedRecHit2DCollection>(m); }
34  void useRPhiHits( const edm::InputTag & m, edm::ConsumesCollector& iC) { hasRPhiHits = true; theRPhiHits = iC.consumes<SiStripRecHit2DCollection>(m); }
35  void useStereoHits( const edm::InputTag & m, edm::ConsumesCollector& iC) { hasStereoHits = true; theStereoHits = iC.consumes<SiStripRecHit2DCollection>(m); }
36  void useRingSelector(int minRing, int maxRing);
37  void useSimpleRphiHitsCleaner(bool use) {hasSimpleRphiHitsCleaner = use;}
38 
39  void cleanedOfClusters( const TkTransientTrackingRecHitBuilder& ttrhBuilder, const edm::Event& ev, HitExtractor::Hits & hits, bool matched, unsigned int cleanFrom=0) const;
40 
41  std::pair<bool,ProjectedSiStripRecHit2D *>
42  skipThis(const TkTransientTrackingRecHitBuilder& ttrhBuilder, TkHitRef matched,
44 
45  bool skipThis(DetId id, OmniClusterRef const& clus, edm::Handle<edm::ContainerMask<edmNew::DetSetVector<SiStripCluster> > > & stripClusterMask) const;
46 
47  void setNoProjection() const {failProjection=true;};
48  void setMinAbsZ(double minZToSet) {minAbsZ=minZToSet;}
49 
50  bool useRingSelector() const { return hasRingSelector; }
51  std::tuple<int, int> getMinMaxRing() const { return std::make_tuple(theMinRing, theMaxRing); }
52 private:
53  bool ringRange(int ring) const;
54 
56  void useSkipClusters_(const edm::InputTag & m, edm::ConsumesCollector& iC) override;
57 private:
60  mutable const SeedingLayer * theSLayer;
62  double minAbsZ;
63  int theMinRing, theMaxRing;
73  mutable bool failProjection;
74 };
75 
76 }
77 #endif
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::vector< HitPointer > Hits
Definition: HitExtractor.h:25
void useStereoHits(const edm::InputTag &m, edm::ConsumesCollector &iC)
BaseTrackerRecHit const & TkHitRef
Definition: HitExtractor.h:23
void useMatchedHits(const edm::InputTag &m, edm::ConsumesCollector &iC)
bool ev
virtual HitExtractorSTRP * clone() const override
edm::EDGetTokenT< SiStripMatchedRecHit2DCollection > theMatchedHits
const GeomDetEnumerators::SubDetector theLayerSubDet
edm::EDGetTokenT< SiStripRecHit2DCollection > theStereoHits
void useRPhiHits(const edm::InputTag &m, edm::ConsumesCollector &iC)
const SeedingLayer * theSLayer
edm::ContainerMask< edmNew::DetSetVector< SiStripCluster > > SkipClustersCollection
Definition: DetId.h:18
void useSimpleRphiHitsCleaner(bool use)
edm::EDGetTokenT< SiStripRecHit2DCollection > theRPhiHits
HLT enums.
SiStripRecHit2D::ClusterRef SiStripClusterRef
void setMinAbsZ(double minZToSet)
std::tuple< int, int > getMinMaxRing() const
edm::EDGetTokenT< SkipClustersCollection > theSkipClusters