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