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
46 
47  // Build groups of rechits that are separated in strip numbers and Z to save time on the segment finding
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,
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 
76 
77  static constexpr float running_max = std::numeric_limits<float>::max();
78  std::unique_ptr<MuonSegFit> sfit_;
79 };
80 
81 #endif
GEMSegmentAlgorithm
Definition: GEMSegmentAlgorithm.h:25
MessageLogger.h
GEMSegmentAlgorithm::clusterHits
ProtoSegments clusterHits(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits)
Utility functions.
Definition: GEMSegmentAlgorithm.cc:95
GEMRecHit.h
GEMSegmentAlgorithm::proto_segment
EnsembleHitContainer proto_segment
Definition: GEMSegmentAlgorithm.h:74
GEMSegmentAlgorithm::sfit_
std::unique_ptr< MuonSegFit > sfit_
Definition: GEMSegmentAlgorithm.h:78
GEMSegmentAlgorithm::preClustering
bool preClustering
Definition: GEMSegmentAlgorithm.h:65
GEMSegmentAlgorithm::buildSegments
void buildSegments(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits, std::vector< GEMSegment > &gemsegs)
Definition: GEMSegmentAlgorithm.cc:323
GEMSegmentAlgorithm::dPhiChainBoxMax
double dPhiChainBoxMax
Definition: GEMSegmentAlgorithm.h:69
GEMSegmentAlgorithm::EnsembleHitContainer
std::vector< const GEMRecHit * > EnsembleHitContainer
Typedefs.
Definition: GEMSegmentAlgorithm.h:28
GEMSegmentAlgorithm::dEtaChainBoxMax
double dEtaChainBoxMax
Definition: GEMSegmentAlgorithm.h:70
GEMSegmentAlgorithm::clusterOnlySameBXRecHits
bool clusterOnlySameBXRecHits
Definition: GEMSegmentAlgorithm.h:72
GEMSegmentAlgorithm::ProtoSegments
std::vector< EnsembleHitContainer > ProtoSegments
Definition: GEMSegmentAlgorithm.h:29
GEMSegmentAlgorithm::isGoodToMerge
bool isGoodToMerge(const GEMEnsemble &ensemble, const EnsembleHitContainer &newChain, const EnsembleHitContainer &oldChain)
Definition: GEMSegmentAlgorithm.cc:278
GEMSegmentAlgorithm::myName
const std::string myName
Definition: GEMSegmentAlgorithm.h:60
GEMSegmentAlgorithm::chainHits
ProtoSegments chainHits(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits)
Definition: GEMSegmentAlgorithm.cc:217
GEMSegmentAlgorithmBase::GEMEnsemble
std::pair< const GEMSuperChamber *, std::map< uint32_t, const GEMEtaPartition * > > GEMEnsemble
Definition: GEMSegmentAlgorithmBase.h:25
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
GEMSegmentAlgorithm::dXclusBoxMax
double dXclusBoxMax
Definition: GEMSegmentAlgorithm.h:66
GEMSegmentAlgorithm::running_max
static constexpr float running_max
Definition: GEMSegmentAlgorithm.h:77
edm::ParameterSet
Definition: ParameterSet.h:36
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
MuonSegFit
Definition: MuonSegFit.h:34
GEMDetId
Definition: GEMDetId.h:17
TrackInfoProducer_cfi.rechits
rechits
Definition: TrackInfoProducer_cfi.py:9
GEMSegmentAlgorithm::minHitsPerSegment
unsigned int minHitsPerSegment
Definition: GEMSegmentAlgorithm.h:64
GEMSegmentAlgorithm::GEMSegmentAlgorithm
GEMSegmentAlgorithm(const edm::ParameterSet &ps)
Constructor.
Definition: GEMSegmentAlgorithm.cc:25
GEMSegmentAlgorithm::debug
bool debug
Definition: GEMSegmentAlgorithm.h:63
GEMSegmentAlgorithmBase
Definition: GEMSegmentAlgorithmBase.h:23
GEMSegmentAlgorithm::dYclusBoxMax
double dYclusBoxMax
Definition: GEMSegmentAlgorithm.h:67
GEMSegmentAlgorithm::preClustering_useChaining
bool preClustering_useChaining
Definition: GEMSegmentAlgorithm.h:68
GEMSegmentAlgorithm::~GEMSegmentAlgorithm
~GEMSegmentAlgorithm() override
Destructor.
Definition: GEMSegmentAlgorithm.cc:56
GEMSegmentAlgorithm::theChamberId
GEMDetId theChamberId
Definition: GEMSegmentAlgorithm.h:75
Exception.h
GEMSegmentAlgorithmBase.h
GEMSegmentAlgorithm::run
std::vector< GEMSegment > run(const GEMEnsemble &ensemble, const EnsembleHitContainer &rechits) override
Definition: GEMSegmentAlgorithm.cc:58
GEMSegmentAlgorithm::maxRecHitsInCluster
int maxRecHitsInCluster
Definition: GEMSegmentAlgorithm.h:71