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