CMS 3D CMS Logo

ME0SegmentAlgorithm.h
Go to the documentation of this file.
1 #ifndef GEMRecHit_ME0SegmentAlgorithm_h
2 #define GEMRecHit_ME0SegmentAlgorithm_h
3 
18 
19 #include <deque>
20 #include <vector>
21 
22 class MuonSegFit;
23 
25 public:
27  typedef std::vector<HitAndPositionPtrContainer> ProtoSegments;
28 
30  explicit ME0SegmentAlgorithm(const edm::ParameterSet& ps);
32  ~ME0SegmentAlgorithm() override;
33 
37  std::vector<ME0Segment> run(const ME0Chamber* chamber, const HitAndPositionContainer& rechits) override;
38 
39 private:
41 
42  // Build groups of rechits that are separated in x and y to save time on the segment finding
43  ProtoSegments clusterHits(const HitAndPositionContainer& rechits);
44 
45  // Build groups of rechits that are separated in strip numbers and Z to save time on the segment finding
46  ProtoSegments chainHits(const ME0Chamber* chamber, const HitAndPositionContainer& rechits);
47 
48  bool isGoodToMerge(const ME0Chamber* chamber,
49  const HitAndPositionPtrContainer& newChain,
50  const HitAndPositionPtrContainer& oldChain);
51 
52  // Build track segments in this chamber (this is where the actual segment-building algorithm hides.)
53  void buildSegments(const ME0Chamber* chamber,
55  std::vector<ME0Segment>& me0segs);
56 
57  // Member variables
59 
60  // input from .cfi file
61  bool debug;
62  unsigned int minHitsPerSegment;
64  double dXclusBoxMax;
65  double dYclusBoxMax;
71 
73  std::unique_ptr<MuonSegFit> sfit_;
74 };
75 
76 #endif
bool isGoodToMerge(const ME0Chamber *chamber, const HitAndPositionPtrContainer &newChain, const HitAndPositionPtrContainer &oldChain)
void buildSegments(const ME0Chamber *chamber, const HitAndPositionPtrContainer &rechits, std::vector< ME0Segment > &me0segs)
unsigned int minHitsPerSegment
std::vector< ME0Segment > run(const ME0Chamber *chamber, const HitAndPositionContainer &rechits) override
std::vector< HitAndPosition > HitAndPositionContainer
ProtoSegments chainHits(const ME0Chamber *chamber, const HitAndPositionContainer &rechits)
~ME0SegmentAlgorithm() override
Destructor.
std::vector< const HitAndPosition * > HitAndPositionPtrContainer
ProtoSegments clusterHits(const HitAndPositionContainer &rechits)
Utility functions.
std::unique_ptr< MuonSegFit > sfit_
std::vector< HitAndPositionPtrContainer > ProtoSegments
Typedefs.
const std::string myName
#define constexpr
ME0SegmentAlgorithm(const edm::ParameterSet &ps)
Constructor.