CMS 3D CMS Logo

CSCGEMMatcher.h
Go to the documentation of this file.
1 #ifndef L1Trigger_CSCTriggerPrimitives_CSCGEMMatcher
2 #define L1Trigger_CSCTriggerPrimitives_CSCGEMMatcher
3 
17 
18 #include <string>
19 #include <vector>
20 
21 class CSCALCTDigi;
22 class CSCCLCTDigi;
23 class GEMInternalCluster;
24 
26 public:
27  typedef std::vector<GEMInternalCluster> GEMInternalClusters;
28 
30  unsigned station,
31  unsigned chamber,
33  const edm::ParameterSet& luts);
34 
35  // calculate the bending angle
36  int calculateGEMCSCBending(const CSCCLCTDigi& clct,
37  const GEMInternalCluster& cluster,
38  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
39  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT) const;
40 
41  // match by location
42 
43  // ALCT-GEM
44  void matchingClustersLoc(const CSCALCTDigi& alct,
47 
48  // CLCT-GEM
49  void matchingClustersLoc(const CSCCLCTDigi& clct,
52  bool ignoreALCTGEMmatch,
53  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
54  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT) const;
55 
56  // matching candidate distance in 1/8 strip, always the total without extrapolation correction, if ForceTotal is true
57  int matchedClusterDistES(const CSCCLCTDigi& clct,
58  const GEMInternalCluster& cluster,
59  const bool isLayer2,
60  const bool ForceTotal,
61  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
62  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT) const;
63 
64  // ALCT-CLCT-GEM
65  void matchingClustersLoc(const CSCALCTDigi& alct,
66  const CSCCLCTDigi& clct,
68  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
69  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT,
71 
72  // best matching clusters by location
73 
74  // ALCT-GEM
75  void bestClusterLoc(const CSCALCTDigi& alct, const GEMInternalClusters& clusters, GEMInternalCluster& best) const;
76 
77  // CLCT-GEM
78  void bestClusterLoc(const CSCCLCTDigi& clct,
80  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
81  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT,
82  GEMInternalCluster& best) const;
83 
84  // ALCT-CLCT-GEM
85  void bestClusterLoc(const CSCALCTDigi& alct,
86  const CSCCLCTDigi& clct,
88  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
89  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT,
90  GEMInternalCluster& best) const;
91 
92 private:
93  //mitigate slope by consistency of slope indicator, if necessary
94  uint16_t mitigatedSlopeByConsistency(const CSCCLCTDigi& clct,
95  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
96  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT) const;
97 
98  // calculate slope correction
99  int CSCGEMSlopeCorrector(const bool isME1a,
100  const int cscSlope,
101  bool isLayer2,
102  const CSCL1TPLookupTableME11ILT* lookupTableME11ILT,
103  const CSCL1TPLookupTableME21ILT* lookupTableME21ILT) const;
104 
105  unsigned endcap_;
106  unsigned station_;
107  unsigned ring_;
108  unsigned chamber_;
109  bool isEven_;
110 
111  // enable GEM-CSC matching in ME1a and ME1b
114 
115  // match GEM-CSC by propagating CLCT to GEM via LUT
117 
118  // Matching interval in Half Strips (less bits to deal with in FW), but then used as Eighth Strips (es=hs*4)
119  unsigned maxDeltaWG_;
120  unsigned maxDeltaHsEven_;
121  unsigned maxDeltaHsOdd_;
122 
125 };
126 
127 #endif
unsigned maxDeltaHsOdd_
bool mitigateSlopeByCosi_
unsigned station_
bool assign_gem_csc_bending_
unsigned maxDeltaHsEven_
CSCGEMMatcher(int endcap, unsigned station, unsigned chamber, const edm::ParameterSet &tmbParams, const edm::ParameterSet &luts)
unsigned chamber_
uint16_t mitigatedSlopeByConsistency(const CSCCLCTDigi &clct, const CSCL1TPLookupTableME11ILT *lookupTableME11ILT, const CSCL1TPLookupTableME21ILT *lookupTableME21ILT) const
void matchingClustersLoc(const CSCALCTDigi &alct, const GEMInternalClusters &clusters, GEMInternalClusters &output) const
bool enable_match_gem_me1b_
bool enable_match_gem_me1a_
int CSCGEMSlopeCorrector(const bool isME1a, const int cscSlope, bool isLayer2, const CSCL1TPLookupTableME11ILT *lookupTableME11ILT, const CSCL1TPLookupTableME21ILT *lookupTableME21ILT) const
int matchedClusterDistES(const CSCCLCTDigi &clct, const GEMInternalCluster &cluster, const bool isLayer2, const bool ForceTotal, const CSCL1TPLookupTableME11ILT *lookupTableME11ILT, const CSCL1TPLookupTableME21ILT *lookupTableME21ILT) const
unsigned ring_
unsigned endcap_
int calculateGEMCSCBending(const CSCCLCTDigi &clct, const GEMInternalCluster &cluster, const CSCL1TPLookupTableME11ILT *lookupTableME11ILT, const CSCL1TPLookupTableME21ILT *lookupTableME21ILT) const
void bestClusterLoc(const CSCALCTDigi &alct, const GEMInternalClusters &clusters, GEMInternalCluster &best) const
std::vector< GEMInternalCluster > GEMInternalClusters
Definition: CSCGEMMatcher.h:27
unsigned maxDeltaWG_
bool matchCLCTpropagation_