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
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_odd_l2
std::vector< std::pair< double, double > > gem_roll_eta_limits_even_l1
std::vector< int > gem_pad_to_csc_hs_me1b_even
std::vector< std::vector< double > > lut_wg_vs_hs_me1ag
std::vector< int > gem_pad_to_csc_hs_even
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_even_l2
std::vector< int > gem_pad_to_csc_hs_me1b_odd
std::vector< int > gem_pad_to_csc_hs_me1a_odd
std::vector< int > gem_pad_to_csc_hs_me1a_even
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1a_even
std::vector< std::pair< double, double > > gem_roll_eta_limits_odd_l2
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_even_l1
std::vector< int > gem_roll_to_csc_wg_even
std::vector< std::vector< double > > lut_wg_vs_hs_me1a
std::vector< std::pair< int, int > > csc_wg_to_gem_roll_odd_l1
std::vector< std::vector< double > > lut_wg_eta_odd
std::vector< std::pair< double, double > > gem_roll_eta_limits_even_l2
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_odd
std::vector< int > gem_pad_to_csc_hs_odd
std::vector< std::vector< double > > lut_wg_vs_hs_me1b
std::vector< std::pair< double, double > > gem_roll_eta_limits_odd_l1
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1a_odd
std::vector< std::vector< double > > lut_wg_eta_even
double a
Definition: hdecay.h:119
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1b_odd
std::vector< std::vector< double > > lut_pt_vs_dphi_gemcsc
bool doesWiregroupCrossStrip(int wg, int keystrip, int theEndcap, bool gangedME1a=false) const
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_me1b_even
std::vector< int > gem_roll_to_csc_wg_odd
std::vector< std::pair< int, int > > csc_hs_to_gem_pad_even
bool doesALCTCrossCLCT(const CSCALCTDigi &a, const CSCCLCTDigi &c, int theEndcap, bool gangedME1a=false) const