CMS 3D CMS Logo

DTCombinatorialExtendedPatternReco.h
Go to the documentation of this file.
1 #ifndef DTSegment_DTCombinatorialExtendedPatternReco_h
2 #define DTSegment_DTCombinatorialExtendedPatternReco_h
3 
13 /* Base Class Headers */
15 
16 /* Collaborating Class Declarations */
17 namespace edm {
18  class ParameterSet;
19  class EventSetup;
20  // class ESHandle;
21 } // namespace edm
22 class DTSegmentUpdator;
23 class DTSegmentCleaner;
24 class DTHitPairForFit;
25 class DTSegmentCand;
28 
29 /* C++ Headers */
30 #include <vector>
31 #include <deque>
32 #include <utility>
33 
37 
38 /* ====================================================================== */
39 
40 /* Class DTCombinatorialExtendedPatternReco Interface */
41 
43 public:
46 
49 
50  /* Operations */
51 
53  edm::OwnVector<DTSLRecSegment2D> reconstruct(const DTSuperLayer* sl,
54  const std::vector<DTRecHit1DPair>& hits) override;
55 
57  std::string algoName() const override { return theAlgoName; }
58 
61  void setES(const edm::EventSetup& setup) override;
62 
63  // pass clusters to algo
64  void setClusters(const std::vector<DTSLRecCluster>& clusters);
65 
66 protected:
67 private:
68  // create the DTHitPairForFit from the pairs for easy use
69  std::vector<std::shared_ptr<DTHitPairForFit>> initHits(const DTSuperLayer* sl,
70  const std::vector<DTRecHit1DPair>& hits);
71 
72  // search for candidate, starting from pairs of hits in different layers
73  std::vector<DTSegmentCand*> buildSegments(const DTSuperLayer* sl,
74  const std::vector<std::shared_ptr<DTHitPairForFit>>& hits);
75 
76  // find all the hits compatible with the candidate
77  std::vector<DTSegmentCand::AssPoint> findCompatibleHits(const LocalPoint& pos,
78  const LocalVector& dir,
79  const std::vector<std::shared_ptr<DTHitPairForFit>>& hits);
80 
81  // build segments from hits collection
82  DTSegmentExtendedCand* buildBestSegment(std::vector<DTSegmentCand::AssPoint>& assHits, const DTSuperLayer* sl);
83 
84  bool checkDoubleCandidates(std::vector<DTSegmentCand*>& segs, DTSegmentCand* seg);
85 
88  void buildPointsCollection(std::vector<DTSegmentCand::AssPoint>& points,
89  std::deque<std::shared_ptr<DTHitPairForFit>>& pointsNoLR,
90  std::vector<DTSegmentCand*>& candidates,
91  const DTSuperLayer* sl);
92 
94  std::vector<DTSegmentExtendedCand*> extendCandidates(std::vector<DTSegmentCand*>& candidates, const DTSuperLayer* sl);
95 
96  bool closeSL(const DTSuperLayerId& id1, const DTSuperLayerId& id2);
97 
98 private:
100  unsigned int theMaxAllowedHits;
103  bool debug;
104  bool usePairs;
105  DTSegmentUpdator* theUpdator; // the updator and fitter
106  DTSegmentCleaner* theCleaner; // the cleaner
107 
109 
110 private:
111  std::vector<std::vector<int>> theTriedPattern;
112  std::vector<DTSLRecCluster> theClusters;
113 };
114 #endif // DTSegment_DTCombinatorialExtendedPatternReco_h
std::string algoName() const override
return the algo name
std::vector< std::vector< int > > theTriedPattern
HLT enums.