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 clear();
34 
37  void run(const CSCWireDigiCollection* wiredc,
38  const CSCComparatorDigiCollection* compdc,
39  const GEMPadDigiCollection* gemPads) override;
40 
41  /* readout the LCTs in ME1a or ME1b */
42  std::vector<CSCCorrelatedLCTDigi> readoutLCTs1a() const;
43  std::vector<CSCCorrelatedLCTDigi> readoutLCTs1b() const;
44 
46  std::unique_ptr<CSCCathodeLCTProcessor> clct1a;
47 
48  private:
49 
50  /* access to the LUTs needed for matching */
51  const CSCGEMMotherboardLUTME11* getLUT() const override {return tmbLUT_.get();}
52  std::unique_ptr<CSCGEMMotherboardLUTME11> tmbLUT_;
53 
55  std::vector<CSCALCTDigi> getALCTs1b() const {return alctV;}
56 
58  std::vector<CSCCLCTDigi> getCLCTs1a() const {return clctV1a;}
59  std::vector<CSCCLCTDigi> getCLCTs1b() const {return clctV1b;}
60 
61  /* readout the LCTs in a sector of ME11 */
62  std::vector<CSCCorrelatedLCTDigi> readoutLCTs(enum CSCPart me1ab) const;
63 
65  void sortLCTs(std::vector<CSCCorrelatedLCTDigi>&, int bx, enum CSCPart,
66  bool (*sorter)(const CSCCorrelatedLCTDigi&, const CSCCorrelatedLCTDigi&)) const;
67  void sortLCTs(std::vector<CSCCorrelatedLCTDigi>&, enum CSCPart,
68  bool (*sorter)(const CSCCorrelatedLCTDigi&, const CSCCorrelatedLCTDigi&)) const;
69 
70  /* check if an ALCT cross a CLCT in an ME11 sector */
71  bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c, int me) const;
72 
73  /* correlate a pair of ALCTs and a pair of CLCTs with matched pads or copads
74  the output is up to two LCTs in a sector of ME11 */
75  void correlateLCTsGEM(CSCALCTDigi& bestALCT, CSCALCTDigi& secondALCT,
76  CSCCLCTDigi& bestCLCT, CSCCLCTDigi& secondCLCT,
77  const GEMPadDigiIds& pads, const GEMCoPadDigiIds& copads,
79  enum CSCPart p) const;
80 
81  /* store the LCTs found separately in ME1a and ME1b */
82  LCTContainer allLCTs1b;
83  LCTContainer allLCTs1a;
84 
87 
88  /* store the CLCTs found separately in ME1a and ME1b */
89  std::vector<CSCCLCTDigi> clctV1a;
90  std::vector<CSCCLCTDigi> clctV1b;
91 
92  // Drop low quality stubs if they don't have GEMs
97 
98  // build LCT from ALCT and GEM
103 
104  // promote ALCT-GEM quality
107 };
108 #endif
std::vector< CSCCLCTDigi > clctV1b
std::vector< CSCCorrelatedLCTDigi > readoutLCTs()
bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c, int me) const
const CSCGEMMotherboardLUTME11 * getLUT() const override
matches< GEMCoPadDigi > GEMCoPadDigiIds
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1b() const
std::vector< CSCALCTDigi > alctV
std::vector< CSCCLCTDigi > getCLCTs1b() const
std::vector< CSCCorrelatedLCTDigi > readoutLCTs1a() const
std::vector< CSCALCTDigi > getALCTs1b() const
std::unique_ptr< CSCCathodeLCTProcessor > clct1a
std::vector< CSCCLCTDigi > getCLCTs1a() const
std::unique_ptr< CSCGEMMotherboardLUTME11 > tmbLUT_
void sortLCTs(std::vector< CSCCorrelatedLCTDigi > &, int bx, enum CSCPart, bool(*sorter)(const CSCCorrelatedLCTDigi &, const CSCCorrelatedLCTDigi &)) const
std::vector< CSCCLCTDigi > clctV1a
double a
Definition: hdecay.h:121
matches< GEMPadDigi > GEMPadDigiIds
void correlateLCTsGEM(CSCALCTDigi &bestALCT, CSCALCTDigi &secondALCT, CSCCLCTDigi &bestCLCT, CSCCLCTDigi &secondCLCT, const GEMPadDigiIds &pads, const GEMCoPadDigiIds &copads, CSCCorrelatedLCTDigi &lct1, CSCCorrelatedLCTDigi &lct2, enum CSCPart p) const
void run(const CSCWireDigiCollection *wiredc, const CSCComparatorDigiCollection *compdc, const GEMPadDigiCollection *gemPads) override