CMS 3D CMS Logo

GEMSegmentAlgorithm.h
Go to the documentation of this file.
1 #ifndef GEMRecHit_GEMSegmentAlgorithm_h
2 #define GEMRecHit_GEMSegmentAlgorithm_h
3 
20 #include <deque>
21 #include <vector>
22 
23 class MuonSegFit;
24 
26 public:
28  typedef std::vector<const GEMRecHit*> EnsembleHitContainer;
29  typedef std::vector<EnsembleHitContainer> ProtoSegments;
30 
32  explicit GEMSegmentAlgorithm(const edm::ParameterSet& ps);
34  ~GEMSegmentAlgorithm() override;
35 
39  std::vector<GEMSegment> run(const GEMEnsemble& ensemble, const EnsembleHitContainer& rechits) override;
40 
41 private:
43 
44  // Build groups of rechits that are separated in x and y to save time on the segment finding
45  ProtoSegments clusterHits(const GEMEnsemble& ensemble, const EnsembleHitContainer& rechits);
46 
47  // Build groups of rechits that are separated in strip numbers and Z to save time on the segment finding
48  ProtoSegments chainHits(const GEMEnsemble& ensemble, const EnsembleHitContainer& rechits);
49 
50  bool isGoodToMerge(const GEMEnsemble& ensemble,
51  const EnsembleHitContainer& newChain,
52  const EnsembleHitContainer& oldChain);
53 
54  // Build track segments in this chamber (this is where the actual segment-building algorithm hides.)
55  void buildSegments(const GEMEnsemble& ensemble,
56  const EnsembleHitContainer& rechits,
57  std::vector<GEMSegment>& gemsegs);
58 
59  // Member variables
61 
62  // input from .cfi file
63  bool debug;
64  unsigned int minHitsPerSegment;
66  double dXclusBoxMax;
67  double dYclusBoxMax;
73 
74  EnsembleHitContainer proto_segment;
76 
78  std::unique_ptr<MuonSegFit> sfit_;
79 };
80 
81 #endif
~GEMSegmentAlgorithm() override
Destructor.
ProtoSegments chainHits(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits)
std::vector< const GEMRecHit * > EnsembleHitContainer
Typedefs.
std::pair< const GEMSuperChamber *, std::map< uint32_t, const GEMEtaPartition * > > GEMEnsemble
const std::string myName
bool isGoodToMerge(const GEMEnsemble &ensemble, const EnsembleHitContainer &newChain, const EnsembleHitContainer &oldChain)
unsigned int minHitsPerSegment
ProtoSegments clusterHits(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits)
Utility functions.
std::vector< EnsembleHitContainer > ProtoSegments
std::unique_ptr< MuonSegFit > sfit_
GEMSegmentAlgorithm(const edm::ParameterSet &ps)
Constructor.
EnsembleHitContainer proto_segment
std::vector< GEMSegment > run(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits) override
#define constexpr
void buildSegments(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits, std::vector< GEMSegment > &gemsegs)