CMS 3D CMS Logo

CSCGEMMotherboardME11.h
Go to the documentation of this file.
1 #ifndef L1Trigger_CSCTriggerPrimitives_CSCGEMMotherboardME11_h
2 #define L1Trigger_CSCTriggerPrimitives_CSCGEMMotherboardME11_h
3 
15 
17 {
18  public:
19 
21  CSCGEMMotherboardME11(unsigned endcap, unsigned station, unsigned sector,
22  unsigned subsector, unsigned chamber,
23  const edm::ParameterSet& conf);
24 
27 
29  ~CSCGEMMotherboardME11() override;
30 
33  void run(const CSCWireDigiCollection* wiredc,
34  const CSCComparatorDigiCollection* compdc,
35  const GEMPadDigiCollection* gemPads) override;
36 
37  /* readout the LCTs in ME1a or ME1b */
38  std::vector<CSCCorrelatedLCTDigi> readoutLCTs1a() const;
39  std::vector<CSCCorrelatedLCTDigi> readoutLCTs1b() const;
40 
41  private:
42 
43  /* access to the LUTs needed for matching */
44  const CSCGEMMotherboardLUTME11* getLUT() const override {return tmbLUT_.get();}
45  std::unique_ptr<CSCGEMMotherboardLUTME11> tmbLUT_;
46  std::unique_ptr<CSCMotherboardLUTME11> cscTmbLUT_;
47 
48  /* readout the LCTs in a sector of ME11 */
49  std::vector<CSCCorrelatedLCTDigi> readoutLCTsME11(enum CSCPart me1ab) const;
50 
52  void sortLCTs(std::vector<CSCCorrelatedLCTDigi>&, int bx,
53  bool (*sorter)(const CSCCorrelatedLCTDigi&, const CSCCorrelatedLCTDigi&)) const;
54  void sortLCTs(std::vector<CSCCorrelatedLCTDigi>&,
55  bool (*sorter)(const CSCCorrelatedLCTDigi&, const CSCCorrelatedLCTDigi&)) const;
56 
57  /* check if an ALCT cross a CLCT in an ME11 sector */
58  bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c) const;
59 
60  /* does wiregroup cross halfstrip or not */
61  bool doesWiregroupCrossStrip(int key_wg, int key_hs) const override;
62 
63  /* correlate a pair of ALCTs and a pair of CLCTs with matched pads or copads
64  the output is up to two LCTs in a sector of ME11 */
65  void correlateLCTsGEM(const CSCALCTDigi& bestALCT,
66  const CSCALCTDigi& secondALCT,
67  const CSCCLCTDigi& bestCLCT,
68  const CSCCLCTDigi& secondCLCT,
69  const GEMPadDigiIds& pads,
70  const GEMCoPadDigiIds& copads,
72  CSCCorrelatedLCTDigi& lct2) const;
73 
74  /* store the CLCTs found separately in ME1a and ME1b */
75  std::vector<CSCCLCTDigi> clctV;
76 
77  // Drop low quality stubs if they don't have GEMs
82 
83  // build LCT from ALCT and GEM
88 
89  // promote ALCT-GEM quality
92 };
93 #endif
std::vector< CSCCLCTDigi > clctV
void sortLCTs(std::vector< CSCCorrelatedLCTDigi > &, int bx, bool(*sorter)(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)) const
const CSCGEMMotherboardLUTME11 * getLUT() const override
bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c) const
matches< GEMCoPadDigi > GEMCoPadDigiIds
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1b() const
std::unique_ptr< CSCMotherboardLUTME11 > cscTmbLUT_
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1a() const
std::vector< CSCCorrelatedLCTDigi > readoutLCTsME11(enum CSCPart me1ab) const
std::unique_ptr< CSCGEMMotherboardLUTME11 > tmbLUT_
void correlateLCTsGEM(const CSCALCTDigi &bestALCT, const CSCALCTDigi &secondALCT, const CSCCLCTDigi &bestCLCT, const CSCCLCTDigi &secondCLCT, const GEMPadDigiIds &pads, const GEMCoPadDigiIds &copads, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2) const
bool doesWiregroupCrossStrip(int key_wg, int key_hs) const override
double a
Definition: hdecay.h:121
matches< GEMPadDigi > GEMPadDigiIds
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads) override