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
44 
45  // Build groups of rechits that are separated in strip numbers and Z to save time on the segment finding
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 
72  static constexpr float running_max = std::numeric_limits<float>::max();
73  std::unique_ptr<MuonSegFit> sfit_;
74 };
75 
76 #endif
ME0SegmentAlgorithm::preClustering
bool preClustering
Definition: ME0SegmentAlgorithm.h:63
ME0SegmentAlgorithm::sfit_
std::unique_ptr< MuonSegFit > sfit_
Definition: ME0SegmentAlgorithm.h:73
ME0RecHit.h
ME0SegmentAlgorithm::dYclusBoxMax
double dYclusBoxMax
Definition: ME0SegmentAlgorithm.h:65
MessageLogger.h
ME0SegmentAlgorithmBase::HitAndPositionContainer
std::vector< HitAndPosition > HitAndPositionContainer
Definition: ME0SegmentAlgorithmBase.h:35
ME0SegmentAlgorithmBase
Definition: ME0SegmentAlgorithmBase.h:23
ME0SegmentAlgorithm::debug
bool debug
Definition: ME0SegmentAlgorithm.h:61
ME0SegmentAlgorithm::dTimeChainBoxMax
double dTimeChainBoxMax
Definition: ME0SegmentAlgorithm.h:69
ME0SegmentAlgorithm
Definition: ME0SegmentAlgorithm.h:24
ME0SegmentAlgorithmBase::HitAndPositionPtrContainer
std::vector< const HitAndPosition * > HitAndPositionPtrContainer
Definition: ME0SegmentAlgorithmBase.h:36
ME0SegmentAlgorithm::chainHits
ProtoSegments chainHits(const ME0Chamber *chamber, const HitAndPositionContainer &rechits)
Definition: ME0SegmentAlgorithm.cc:214
ME0SegmentAlgorithm::myName
const std::string myName
Definition: ME0SegmentAlgorithm.h:58
ME0SegmentAlgorithm::buildSegments
void buildSegments(const ME0Chamber *chamber, const HitAndPositionPtrContainer &rechits, std::vector< ME0Segment > &me0segs)
Definition: ME0SegmentAlgorithm.cc:314
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::ParameterSet
Definition: ParameterSet.h:36
ME0SegmentAlgorithm::minHitsPerSegment
unsigned int minHitsPerSegment
Definition: ME0SegmentAlgorithm.h:62
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
MuonSegFit
Definition: MuonSegFit.h:34
TrackInfoProducer_cfi.rechits
rechits
Definition: TrackInfoProducer_cfi.py:9
ME0SegmentAlgorithm::maxRecHitsInCluster
int maxRecHitsInCluster
Definition: ME0SegmentAlgorithm.h:70
ME0Chamber
Definition: ME0Chamber.h:10
ME0SegmentAlgorithm::running_max
static constexpr float running_max
Definition: ME0SegmentAlgorithm.h:72
ME0SegmentAlgorithm::run
std::vector< ME0Segment > run(const ME0Chamber *chamber, const HitAndPositionContainer &rechits) override
Definition: ME0SegmentAlgorithm.cc:51
ME0SegmentAlgorithm::dXclusBoxMax
double dXclusBoxMax
Definition: ME0SegmentAlgorithm.h:64
ME0SegmentAlgorithmBase.h
ME0SegmentAlgorithm::preClustering_useChaining
bool preClustering_useChaining
Definition: ME0SegmentAlgorithm.h:66
ME0SegmentAlgorithm::dPhiChainBoxMax
double dPhiChainBoxMax
Definition: ME0SegmentAlgorithm.h:67
ME0SegmentAlgorithm::dEtaChainBoxMax
double dEtaChainBoxMax
Definition: ME0SegmentAlgorithm.h:68
ME0SegmentAlgorithm::ProtoSegments
std::vector< HitAndPositionPtrContainer > ProtoSegments
Typedefs.
Definition: ME0SegmentAlgorithm.h:27
relativeConstraints.chamber
chamber
Definition: relativeConstraints.py:53
ME0SegmentAlgorithm::~ME0SegmentAlgorithm
~ME0SegmentAlgorithm() override
Destructor.
Definition: ME0SegmentAlgorithm.cc:49
ME0SegmentAlgorithm::clusterHits
ProtoSegments clusterHits(const HitAndPositionContainer &rechits)
Utility functions.
Definition: ME0SegmentAlgorithm.cc:102
ME0SegmentAlgorithm::isGoodToMerge
bool isGoodToMerge(const ME0Chamber *chamber, const HitAndPositionPtrContainer &newChain, const HitAndPositionPtrContainer &oldChain)
Definition: ME0SegmentAlgorithm.cc:279
ME0SegmentAlgorithm::ME0SegmentAlgorithm
ME0SegmentAlgorithm(const edm::ParameterSet &ps)
Constructor.
Definition: ME0SegmentAlgorithm.cc:25