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 
4 #include <vector>
5 #include <map>
6 
8 enum CSCPart {ME1B = 1, ME1A=4, ME21=21, ME1Ag, ME11, ME31, ME41};
9 enum Parity {Even=0, Odd=1};
10 
12 {
13  public:
14 
16  virtual ~CSCGEMMotherboardLUT();
17 
18  virtual std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const=0;
19  virtual std::vector<std::pair<int,int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const=0;
20  std::vector<std::pair<int,int> > get_csc_wg_to_gem_roll(Parity par, int layer=1) const;
21  // map the GEM roll to the wire-group in the middle of that roll
22  std::vector<int> get_gem_roll_to_csc_wg(Parity par, int layer=1) const;
23 
24  protected:
25 
26  std::vector<std::vector<double> > lut_wg_eta_odd;
27  std::vector<std::vector<double> > lut_wg_eta_even;
28  // LUT with bending angles of the GEM-CSC high efficiency patterns (98%)
29  // 1st index: pt value = {3,5,7,10,15,20,30,40}
30  // 2nd index: bending angle for odd numbered chambers
31  // 3rd index: bending angle for even numbered chambers
32  std::vector<std::vector<double> > lut_pt_vs_dphi_gemcsc;
33  //LUTs that map CSC trigger geometry to GEM trigger geometry
34 
35  // map of roll N to min and max eta
36  std::vector<std::pair<double,double> > gem_roll_eta_limits_odd_l1;
37  std::vector<std::pair<double,double> > gem_roll_eta_limits_odd_l2;
38  std::vector<std::pair<double,double> > gem_roll_eta_limits_even_l1;
39  std::vector<std::pair<double,double> > gem_roll_eta_limits_even_l2;
40 
41  // map CSC wire-group to GEM roll number
42  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_odd_l1;
43  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_odd_l2;
44  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_even_l1;
45  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_even_l2;
46 
47  // map the GEM roll to the wire-group in the middle of that roll
48  std::vector<int> gem_roll_to_csc_wg_odd_l1;
49  std::vector<int> gem_roll_to_csc_wg_odd_l2;
50  std::vector<int> gem_roll_to_csc_wg_even_l1;
51  std::vector<int> gem_roll_to_csc_wg_even_l2;
52 };
53 
54 
56 {
57  public:
58 
60  ~CSCGEMMotherboardLUTME11() override;
61 
62  std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override;
63  std::vector<std::pair<int,int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override;
64  std::vector<std::vector<double> > get_lut_wg_vs_hs(enum CSCPart) const;
65 
66  // LUT for which ME1/1 wire group can cross which ME1/a halfstrip
67  // 1st index: WG number
68  // 2nd index: inclusive HS range
69  //with "ag" a modified LUT for ganged ME1a
70  std::vector<std::vector<double> > lut_wg_vs_hs_me1a;
71  std::vector<std::vector<double> > lut_wg_vs_hs_me1ag;
72  std::vector<std::vector<double> > lut_wg_vs_hs_me1b;
73 
74  // map of pad to HS
75  std::vector<int> gem_pad_to_csc_hs_me1a_odd;
76  std::vector<int> gem_pad_to_csc_hs_me1a_even;
77 
78  std::vector<int> gem_pad_to_csc_hs_me1b_odd;
79  std::vector<int> gem_pad_to_csc_hs_me1b_even;
80 
81  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1a_odd;
82  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1a_even;
83 
84  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1b_odd;
85  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1b_even;
86 };
87 
89 {
90  public:
91 
93  ~CSCGEMMotherboardLUTME21() override;
94 
95  std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override;
96  std::vector<std::pair<int,int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override;
97 
98  // map of pad to HS
99  std::vector<int> gem_pad_to_csc_hs_odd;
100  std::vector<int> gem_pad_to_csc_hs_even;
101 
102  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_odd;
103  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_even;
104 };
105 
107 {
108 public:
109 
111  virtual ~CSCRPCMotherboardLUT();
112 
113  std::vector<std::vector<double> > get_lut_wg_eta(Parity par) const;
114  std::vector<std::pair<double,double> > get_rpc_roll_eta_limits(Parity par) const;
115  std::vector<int> get_rpc_strip_to_csc_hs(Parity par) const;
116  std::vector<std::pair<int,int> > get_csc_hs_to_rpc_strip(Parity par) const;
117  std::vector<int> get_csc_wg_to_rpc_roll(Parity par) const;
118 
119  protected:
120  // map of wg to eta roll
121  std::vector<std::vector<double> > lut_wg_eta_odd;
122  std::vector<std::vector<double> > lut_wg_eta_even;
123 
124  // map of roll N to min and max eta
125  std::vector<std::pair<double,double> > rpc_roll_eta_limits_odd;
126  std::vector<std::pair<double,double> > rpc_roll_eta_limits_even;
127 
128  // map of strip to HS
129  std::vector<int> rpc_strip_to_csc_hs_odd;
130  std::vector<int> rpc_strip_to_csc_hs_even;
131 
132  std::vector<std::pair<int,int> > csc_hs_to_rpc_strip_odd;
133  std::vector<std::pair<int,int> > csc_hs_to_rpc_strip_even;
134 
135  std::vector<int> csc_wg_to_rpc_roll_odd;
136  std::vector<int> csc_wg_to_rpc_roll_even;
137 };
138 
140 {
141  public:
142 
145 };
146 
148 {
149  public:
150 
153 };
154 
155 #endif
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_even_l1
std::vector< int > gem_pad_to_csc_hs_me1b_even
std::vector< int > gem_roll_to_csc_wg_odd_l1
std::vector< int > get_gem_roll_to_csc_wg(Parity par, int layer=1) const
std::vector< int > gem_pad_to_csc_hs_even
std::vector< int > csc_wg_to_rpc_roll_odd
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_odd
std::vector< std::pair< double, double > > rpc_roll_eta_limits_even
std::vector< std::pair< double, double > > gem_roll_eta_limits_odd_l1
std::vector< std::vector< double > > lut_wg_eta_odd
std::vector< int > gem_pad_to_csc_hs_me1b_odd
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1b_even
std::vector< int > gem_pad_to_csc_hs_me1a_odd
std::vector< std::vector< double > > lut_wg_vs_hs_me1a
std::vector< int > gem_pad_to_csc_hs_me1a_even
std::vector< int > gem_roll_to_csc_wg_even_l1
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_odd_l2
virtual std::vector< std::pair< int, int > > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const =0
std::vector< int > rpc_strip_to_csc_hs_odd
std::vector< int > csc_wg_to_rpc_roll_even
std::vector< int > gem_roll_to_csc_wg_even_l2
std::vector< std::vector< double > > lut_wg_eta_even
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_even
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_odd_l1
std::vector< std::pair< double, double > > gem_roll_eta_limits_odd_l2
virtual std::vector< int > get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const =0
std::vector< std::vector< double > > lut_wg_eta_odd
std::vector< std::vector< double > > lut_wg_vs_hs_me1ag
std::vector< std::pair< double, double > > gem_roll_eta_limits_even_l1
std::vector< std::pair< int, int > > csc_hs_to_rpc_strip_odd
std::vector< std::vector< double > > lut_wg_vs_hs_me1b
std::vector< int > gem_pad_to_csc_hs_odd
std::vector< std::pair< double, double > > gem_roll_eta_limits_even_l2
std::vector< int > gem_roll_to_csc_wg_odd_l2
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_even_l2
std::vector< std::vector< double > > lut_wg_eta_even
std::vector< std::pair< int, int > > csc_hs_to_rpc_strip_even
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1a_odd
std::vector< std::vector< double > > lut_pt_vs_dphi_gemcsc
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1a_even
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1b_odd
std::vector< std::pair< int, int > > get_csc_wg_to_gem_roll(Parity par, int layer=1) const
std::vector< std::pair< double, double > > rpc_roll_eta_limits_odd
std::vector< int > rpc_strip_to_csc_hs_even