CMS 3D CMS Logo

CSCUpgradeMotherboardLUT.h
Go to the documentation of this file.
1 #ifndef L1Trigger_CSCTriggerPrimitives_CSCUpgradeMotherboardLUT_h
2 #define L1Trigger_CSCTriggerPrimitives_CSCUpgradeMotherboardLUT_h
3 
7 
8 #include <vector>
9 #include <map>
10 
12 enum CSCPart { ME1B = 1, ME1A = 4, ME21 = 21, ME1Ag, ME11, ME31, ME41 };
13 enum Parity { Even = 0, Odd = 1 };
14 
16 public:
19  bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c, int theEndcap, bool gangedME1a = false) const;
20  bool doesWiregroupCrossStrip(int wg, int keystrip, int theEndcap, bool gangedME1a = false) const;
21 
22 private:
23  // LUT for which ME1/1 wire group can cross which ME1/a halfstrip
24  // 1st index: WG number
25  // 2nd index: inclusive HS range
26  //with "ag" a modified LUT for ganged ME1a
27  std::vector<std::vector<double> > lut_wg_vs_hs_me1a;
28  std::vector<std::vector<double> > lut_wg_vs_hs_me1ag;
29  // LUT for which ME1/1 wire group can cross which ME1/b halfstrip
30  // 1st index: WG number
31  // 2nd index: inclusive HS range
32  std::vector<std::vector<double> > lut_wg_vs_hs_me1b;
33 };
34 
36 public:
38  virtual ~CSCGEMMotherboardLUT();
39 
40  // map of GEM pad number to CSC halfstrip number
41  virtual std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const = 0;
42  // map of CSC halfstrip number to GEM pad number
43  virtual std::vector<std::pair<int, int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const = 0;
44  // map of CSC wiregroup to GEM rols
45  std::vector<std::pair<int, int> > get_csc_wg_to_gem_roll(Parity par, int layer = 1) const;
46  // map the GEM roll to the wire-group in the middle of that roll
47  std::vector<int> get_gem_roll_to_csc_wg(Parity par) const;
48 
49 protected:
50  // maps the edges of the CSC wire group to eta for odd numbered chambers
51  std::vector<std::vector<double> > lut_wg_eta_odd;
52  // maps the edges of the CSC wire group to eta for even numbered chambers
53  std::vector<std::vector<double> > lut_wg_eta_even;
54  // LUT with bending angles of the GEM-CSC high efficiency patterns (98%)
55  // 1st index: pt value = {3,5,7,10,15,20,30,40}
56  // 2nd index: bending angle for odd numbered chambers
57  // 3rd index: bending angle for even numbered chambers
58  std::vector<std::vector<double> > lut_pt_vs_dphi_gemcsc;
59  //LUTs that map CSC trigger geometry to GEM trigger geometry
60 
61  // map of roll N to min and max eta
62  std::vector<std::pair<double, double> > gem_roll_eta_limits_odd_l1;
63  std::vector<std::pair<double, double> > gem_roll_eta_limits_odd_l2;
64  std::vector<std::pair<double, double> > gem_roll_eta_limits_even_l1;
65  std::vector<std::pair<double, double> > gem_roll_eta_limits_even_l2;
66 
67  // map CSC wire-group to GEM roll number
68  std::vector<std::pair<int, int> > csc_wg_to_gem_roll_odd_l1;
69  std::vector<std::pair<int, int> > csc_wg_to_gem_roll_odd_l2;
70  std::vector<std::pair<int, int> > csc_wg_to_gem_roll_even_l1;
71  std::vector<std::pair<int, int> > csc_wg_to_gem_roll_even_l2;
72 
73  // map the GEM roll to the wire-group in the middle of that roll
74  std::vector<int> gem_roll_to_csc_wg_odd;
75  std::vector<int> gem_roll_to_csc_wg_even;
76 };
77 
79 public:
81  ~CSCGEMMotherboardLUTME11() override;
82 
83  std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override;
84  std::vector<std::pair<int, int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override;
85 
86  // map of GEM pad to CSC HS for ME1a chambers
87  std::vector<int> gem_pad_to_csc_hs_me1a_odd;
88  std::vector<int> gem_pad_to_csc_hs_me1a_even;
89 
90  // map of GEM pad to CSC HS for ME1b chambers
91  std::vector<int> gem_pad_to_csc_hs_me1b_odd;
92  std::vector<int> gem_pad_to_csc_hs_me1b_even;
93 
94  // map of CSC HS to GEM pad for ME1a chambers
95  std::vector<std::pair<int, int> > csc_hs_to_gem_pad_me1a_odd;
96  std::vector<std::pair<int, int> > csc_hs_to_gem_pad_me1a_even;
97 
98  // map of CSC HS to GEM pad for ME1b chambers
99  std::vector<std::pair<int, int> > csc_hs_to_gem_pad_me1b_odd;
100  std::vector<std::pair<int, int> > csc_hs_to_gem_pad_me1b_even;
101 };
102 
104 public:
106  ~CSCGEMMotherboardLUTME21() override;
107 
108  std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override;
109  std::vector<std::pair<int, int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override;
110 
111  // map of GEM pad to CSC HS
112  std::vector<int> gem_pad_to_csc_hs_odd;
113  std::vector<int> gem_pad_to_csc_hs_even;
114 
115  // map of CSC HS to GEM pad
116  std::vector<std::pair<int, int> > csc_hs_to_gem_pad_odd;
117  std::vector<std::pair<int, int> > csc_hs_to_gem_pad_even;
118 };
119 
120 #endif
CSCGEMMotherboardLUTME11::get_csc_hs_to_gem_pad
std::vector< std::pair< int, int > > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override
Definition: CSCUpgradeMotherboardLUT.cc:130
CSCGEMMotherboardLUTME21::get_csc_hs_to_gem_pad
std::vector< std::pair< int, int > > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override
Definition: CSCUpgradeMotherboardLUT.cc:126
CSCGEMMotherboardLUT::lut_wg_eta_even
std::vector< std::vector< double > > lut_wg_eta_even
Definition: CSCUpgradeMotherboardLUT.h:53
CSCGEMMotherboardLUTME11::gem_pad_to_csc_hs_me1b_even
std::vector< int > gem_pad_to_csc_hs_me1b_even
Definition: CSCUpgradeMotherboardLUT.h:92
ME11
Definition: CSCUpgradeMotherboardLUT.h:12
CSCGEMMotherboardLUTME21::get_gem_pad_to_csc_hs
std::vector< int > get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override
Definition: CSCUpgradeMotherboardLUT.cc:122
CSCGEMMotherboardLUTME11::~CSCGEMMotherboardLUTME11
~CSCGEMMotherboardLUTME11() override
Definition: CSCUpgradeMotherboardLUT.cc:336
CSCGEMMotherboardLUT::get_gem_pad_to_csc_hs
virtual std::vector< int > get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const =0
CSCMotherboardLUTME11::lut_wg_vs_hs_me1a
std::vector< std::vector< double > > lut_wg_vs_hs_me1a
Definition: CSCUpgradeMotherboardLUT.h:27
CSCGEMMotherboardLUTME11
Definition: CSCUpgradeMotherboardLUT.h:78
CSCGEMMotherboardLUT::~CSCGEMMotherboardLUT
virtual ~CSCGEMMotherboardLUT()
Definition: CSCUpgradeMotherboardLUT.cc:138
ME41
Definition: CSCUpgradeMotherboardLUT.h:12
CSCGEMMotherboardLUT::csc_wg_to_gem_roll_odd_l2
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_odd_l2
Definition: CSCUpgradeMotherboardLUT.h:69
CSCGEMMotherboardLUTME21::CSCGEMMotherboardLUTME21
CSCGEMMotherboardLUTME21()
Definition: CSCUpgradeMotherboardLUT.cc:338
CSCGEMMotherboardLUTME21::csc_hs_to_gem_pad_odd
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_odd
Definition: CSCUpgradeMotherboardLUT.h:116
CSCGEMMotherboardLUTME21::gem_pad_to_csc_hs_odd
std::vector< int > gem_pad_to_csc_hs_odd
Definition: CSCUpgradeMotherboardLUT.h:112
Parity
Parity
Definition: CSCUpgradeMotherboardLUT.h:13
CSCCLCTDigi
Definition: CSCCLCTDigi.h:17
CSCMotherboardLUTME11::doesALCTCrossCLCT
bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c, int theEndcap, bool gangedME1a=false) const
Definition: CSCUpgradeMotherboardLUT.cc:29
CSCGEMMotherboardLUTME11::csc_hs_to_gem_pad_me1b_odd
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1b_odd
Definition: CSCUpgradeMotherboardLUT.h:99
CSCGEMMotherboardLUT::csc_wg_to_gem_roll_even_l2
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_even_l2
Definition: CSCUpgradeMotherboardLUT.h:71
CSCGEMMotherboardLUTME11::get_gem_pad_to_csc_hs
std::vector< int > get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override
Definition: CSCUpgradeMotherboardLUT.cc:114
CSCMotherboardLUTME11::~CSCMotherboardLUTME11
~CSCMotherboardLUTME11()
Definition: CSCUpgradeMotherboardLUT.h:18
CSCMotherboardLUTME11::CSCMotherboardLUTME11
CSCMotherboardLUTME11()
Definition: CSCUpgradeMotherboardLUT.cc:3
CSCGEMMotherboardLUTME11::csc_hs_to_gem_pad_me1b_even
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1b_even
Definition: CSCUpgradeMotherboardLUT.h:100
CSCALCTDigi.h
CSCGEMMotherboardLUT::csc_wg_to_gem_roll_even_l1
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_even_l1
Definition: CSCUpgradeMotherboardLUT.h:70
ME31
Definition: CSCUpgradeMotherboardLUT.h:12
CSCGEMMotherboardLUT
Definition: CSCUpgradeMotherboardLUT.h:35
CSCPart
CSCPart
Definition: CSCUpgradeMotherboardLUT.h:12
CSCConstants.h
CSCGEMMotherboardLUT::get_csc_hs_to_gem_pad
virtual std::vector< std::pair< int, int > > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const =0
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
l1temulator_dqm_sourceclient-live_cfg.gangedME1a
gangedME1a
Definition: l1temulator_dqm_sourceclient-live_cfg.py:99
CSCMotherboardLUTME11::doesWiregroupCrossStrip
bool doesWiregroupCrossStrip(int wg, int keystrip, int theEndcap, bool gangedME1a=false) const
Definition: CSCUpgradeMotherboardLUT.cc:40
CSCGEMMotherboardLUTME21
Definition: CSCUpgradeMotherboardLUT.h:103
CSCGEMMotherboardLUT::gem_roll_eta_limits_odd_l2
std::vector< std::pair< double, double > > gem_roll_eta_limits_odd_l2
Definition: CSCUpgradeMotherboardLUT.h:63
CSCGEMMotherboardLUTME11::gem_pad_to_csc_hs_me1b_odd
std::vector< int > gem_pad_to_csc_hs_me1b_odd
Definition: CSCUpgradeMotherboardLUT.h:91
a
double a
Definition: hdecay.h:119
CSCGEMMotherboardLUT::gem_roll_to_csc_wg_even
std::vector< int > gem_roll_to_csc_wg_even
Definition: CSCUpgradeMotherboardLUT.h:75
ME1A
Definition: CSCUpgradeMotherboardLUT.h:12
CSCMotherboardLUTME11::lut_wg_vs_hs_me1ag
std::vector< std::vector< double > > lut_wg_vs_hs_me1ag
Definition: CSCUpgradeMotherboardLUT.h:28
CSCGEMMotherboardLUTME21::csc_hs_to_gem_pad_even
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_even
Definition: CSCUpgradeMotherboardLUT.h:117
CSCGEMMotherboardLUTME11::CSCGEMMotherboardLUTME11
CSCGEMMotherboardLUTME11()
Definition: CSCUpgradeMotherboardLUT.cc:140
CSCMotherboardLUTME11
Definition: CSCUpgradeMotherboardLUT.h:15
CSCGEMMotherboardLUTME11::csc_hs_to_gem_pad_me1a_odd
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1a_odd
Definition: CSCUpgradeMotherboardLUT.h:95
CSCGEMMotherboardLUT::gem_roll_eta_limits_even_l2
std::vector< std::pair< double, double > > gem_roll_eta_limits_even_l2
Definition: CSCUpgradeMotherboardLUT.h:65
CSCMotherboardLUTME11::lut_wg_vs_hs_me1b
std::vector< std::vector< double > > lut_wg_vs_hs_me1b
Definition: CSCUpgradeMotherboardLUT.h:32
CSCGEMMotherboardLUT::csc_wg_to_gem_roll_odd_l1
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_odd_l1
Definition: CSCUpgradeMotherboardLUT.h:68
CSCGEMMotherboardLUT::get_gem_roll_to_csc_wg
std::vector< int > get_gem_roll_to_csc_wg(Parity par) const
Definition: CSCUpgradeMotherboardLUT.cc:106
CSCGEMMotherboardLUT::CSCGEMMotherboardLUT
CSCGEMMotherboardLUT()
Definition: CSCUpgradeMotherboardLUT.cc:81
CSCGEMMotherboardLUT::lut_wg_eta_odd
std::vector< std::vector< double > > lut_wg_eta_odd
Definition: CSCUpgradeMotherboardLUT.h:51
CSCGEMMotherboardLUT::get_csc_wg_to_gem_roll
std::vector< std::pair< int, int > > get_csc_wg_to_gem_roll(Parity par, int layer=1) const
Definition: CSCUpgradeMotherboardLUT.cc:98
CSCGEMMotherboardLUT::gem_roll_eta_limits_odd_l1
std::vector< std::pair< double, double > > gem_roll_eta_limits_odd_l1
Definition: CSCUpgradeMotherboardLUT.h:62
ME1Ag
Definition: CSCUpgradeMotherboardLUT.h:12
CSCALCTDigi
Definition: CSCALCTDigi.h:17
CSCCLCTDigi.h
CSCGEMMotherboardLUTME21::gem_pad_to_csc_hs_even
std::vector< int > gem_pad_to_csc_hs_even
Definition: CSCUpgradeMotherboardLUT.h:113
CSCGEMMotherboardLUTME11::csc_hs_to_gem_pad_me1a_even
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1a_even
Definition: CSCUpgradeMotherboardLUT.h:96
Odd
Definition: CSCUpgradeMotherboardLUT.h:13
CSCGEMMotherboardLUT::lut_pt_vs_dphi_gemcsc
std::vector< std::vector< double > > lut_pt_vs_dphi_gemcsc
Definition: CSCUpgradeMotherboardLUT.h:58
CSCGEMMotherboardLUTME11::gem_pad_to_csc_hs_me1a_odd
std::vector< int > gem_pad_to_csc_hs_me1a_odd
Definition: CSCUpgradeMotherboardLUT.h:87
Even
Definition: CSCUpgradeMotherboardLUT.h:13
c
auto & c
Definition: CAHitNtupletGeneratorKernelsImpl.h:46
CSCGEMMotherboardLUTME21::~CSCGEMMotherboardLUTME21
~CSCGEMMotherboardLUTME21() override
Definition: CSCUpgradeMotherboardLUT.cc:559
CSCGEMMotherboardLUT::gem_roll_to_csc_wg_odd
std::vector< int > gem_roll_to_csc_wg_odd
Definition: CSCUpgradeMotherboardLUT.h:74
CSCGEMMotherboardLUTME11::gem_pad_to_csc_hs_me1a_even
std::vector< int > gem_pad_to_csc_hs_me1a_even
Definition: CSCUpgradeMotherboardLUT.h:88
ME21
Definition: CSCUpgradeMotherboardLUT.h:12
CSCGEMMotherboardLUT::gem_roll_eta_limits_even_l1
std::vector< std::pair< double, double > > gem_roll_eta_limits_even_l1
Definition: CSCUpgradeMotherboardLUT.h:64
ME1B
Definition: CSCUpgradeMotherboardLUT.h:12