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  // map of GEM pad number to CSC halfstrip number
19  virtual std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const=0;
20  // map of CSC halfstrip number to GEM pad number
21  virtual std::vector<std::pair<int,int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const=0;
22  // map of CSC wiregroup to GEM rols
23  std::vector<std::pair<int,int> > get_csc_wg_to_gem_roll(Parity par, int layer=1) const;
24  // map the GEM roll to the wire-group in the middle of that roll
25  std::vector<int> get_gem_roll_to_csc_wg(Parity par, int layer=1) const;
26 
27  protected:
28 
29  // maps the edges of the CSC wire group to eta for odd numbered chambers
30  std::vector<std::vector<double> > lut_wg_eta_odd;
31  // maps the edges of the CSC wire group to eta for even numbered chambers
32  std::vector<std::vector<double> > lut_wg_eta_even;
33  // LUT with bending angles of the GEM-CSC high efficiency patterns (98%)
34  // 1st index: pt value = {3,5,7,10,15,20,30,40}
35  // 2nd index: bending angle for odd numbered chambers
36  // 3rd index: bending angle for even numbered chambers
37  std::vector<std::vector<double> > lut_pt_vs_dphi_gemcsc;
38  //LUTs that map CSC trigger geometry to GEM trigger geometry
39 
40  // map of roll N to min and max eta
41  std::vector<std::pair<double,double> > gem_roll_eta_limits_odd_l1;
42  std::vector<std::pair<double,double> > gem_roll_eta_limits_odd_l2;
43  std::vector<std::pair<double,double> > gem_roll_eta_limits_even_l1;
44  std::vector<std::pair<double,double> > gem_roll_eta_limits_even_l2;
45 
46  // map CSC wire-group to GEM roll number
47  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_odd_l1;
48  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_odd_l2;
49  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_even_l1;
50  std::vector<std::pair<int,int> > csc_wg_to_gem_roll_even_l2;
51 
52  // map the GEM roll to the wire-group in the middle of that roll
53  std::vector<int> gem_roll_to_csc_wg_odd_l1;
54  std::vector<int> gem_roll_to_csc_wg_odd_l2;
55  std::vector<int> gem_roll_to_csc_wg_even_l1;
56  std::vector<int> gem_roll_to_csc_wg_even_l2;
57 };
58 
59 
61 {
62  public:
63 
65  ~CSCGEMMotherboardLUTME11() override;
66 
67  std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override;
68  std::vector<std::pair<int,int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override;
69  std::vector<std::vector<double> > get_lut_wg_vs_hs(enum CSCPart) const;
70 
71  // LUT for which ME1/1 wire group can cross which ME1/a halfstrip
72  // 1st index: WG number
73  // 2nd index: inclusive HS range
74  //with "ag" a modified LUT for ganged ME1a
75  std::vector<std::vector<double> > lut_wg_vs_hs_me1a;
76  std::vector<std::vector<double> > lut_wg_vs_hs_me1ag;
77  std::vector<std::vector<double> > lut_wg_vs_hs_me1b;
78 
79  // map of GEM pad to CSC HS for ME1a chambers
80  std::vector<int> gem_pad_to_csc_hs_me1a_odd;
81  std::vector<int> gem_pad_to_csc_hs_me1a_even;
82 
83  // map of GEM pad to CSC HS for ME1b chambers
84  std::vector<int> gem_pad_to_csc_hs_me1b_odd;
85  std::vector<int> gem_pad_to_csc_hs_me1b_even;
86 
87  // map of CSC HS to GEM pad for ME1a chambers
88  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1a_odd;
89  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1a_even;
90 
91  // map of CSC HS to GEM pad for ME1b chambers
92  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1b_odd;
93  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_me1b_even;
94 };
95 
97 {
98  public:
99 
101  ~CSCGEMMotherboardLUTME21() override;
102 
103  std::vector<int> get_gem_pad_to_csc_hs(Parity par, enum CSCPart) const override;
104  std::vector<std::pair<int,int> > get_csc_hs_to_gem_pad(Parity par, enum CSCPart) const override;
105 
106  // map of GEM pad to CSC HS
107  std::vector<int> gem_pad_to_csc_hs_odd;
108  std::vector<int> gem_pad_to_csc_hs_even;
109 
110  // map of CSC HS to GEM pad
111  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_odd;
112  std::vector<std::pair<int,int> > csc_hs_to_gem_pad_even;
113 };
114 
115 #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< std::pair< int, int > > csc_hs_to_gem_pad_odd
std::vector< std::pair< double, double > > gem_roll_eta_limits_odd_l1
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 > gem_roll_to_csc_wg_even_l2
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::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_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