CMS 3D CMS Logo

L1RCTRegion.cc
Go to the documentation of this file.
2 
3 #include <vector>
4 using std::vector;
5 
6 #include <iostream>
7 using std::cerr;
8 using std::cout;
9 using std::endl;
10 
11 L1RCTRegion::L1RCTRegion() : totalRegionEt(36), totalRegionHE_FG(36), etIn9Bits(16), muonBit(16), activityBit(16) {}
12 
14 
15 // So the whole point of the following two functions is that they provide
16 // an interface to the "real" 4x4 region 7 bit energies and h/e||fg bits
17 // that are used in electron finding.
18 // Now, you actually *can* give them arguments ranging from -1 to 4
19 // representing the outer neighbors.
20 // This is actually quite helpful and allows you to write the electronfinding
21 // algorithm in the same form no matter what tower you're centered on.
22 //
23 // As a reminder i is row and j is column, just like matrices.
24 // row -1 is the northern neighbors and column -1 is the western neighbors
25 unsigned short L1RCTRegion::getEtIn7Bits(int i, int j) const {
26  // i & j run 0-3
27  return totalRegionEt.at(6 * (i + 1) + j + 1);
28 }
29 
30 void L1RCTRegion::setEtIn7Bits(int i, int j, unsigned short energy) {
31  // i & j should be 0-3
32  if (energy <= 127)
33  totalRegionEt.at(6 * (i + 1) + j + 1) = energy;
34  else
35  totalRegionEt.at(6 * (i + 1) + j + 1) = 127;
36 }
37 
38 unsigned short L1RCTRegion::getHE_FGBit(int i, int j) const { return totalRegionHE_FG.at(6 * (i + 1) + j + 1); }
39 
40 void L1RCTRegion::setHE_FGBit(int i, int j, unsigned short HE_FG) { totalRegionHE_FG.at(6 * (i + 1) + j + 1) = HE_FG; }
41 
42 // The rest of the data stored in a region only works if i and j are
43 // in the 0-3 range. The arrays truly are 4x4 and will signal an error
44 // if misused thanks to the vector function .at
45 unsigned short L1RCTRegion::getEtIn9Bits(int i, int j) const { return etIn9Bits.at(4 * i + j); }
46 
47 void L1RCTRegion::setEtIn9Bits(int i, int j, unsigned short energy) {
48  if (energy <= 511)
49  etIn9Bits.at(4 * i + j) = energy;
50  else
51  etIn9Bits.at(4 * i + j) = 511;
52 }
53 
54 unsigned short L1RCTRegion::getMuonBit(int i, int j) const { return muonBit.at(4 * i + j); }
55 
56 void L1RCTRegion::setMuonBit(int i, int j, unsigned short muon) { muonBit.at(4 * i + j) = muon; }
57 
58 void L1RCTRegion::setActivityBit(int i, int j, unsigned short activity) { activityBit.at(4 * i + j) = activity; }
59 
60 unsigned short L1RCTRegion::getActivityBit(int i, int j) const { return activityBit.at(4 * i + j); }
61 
62 // The following list of give and set functions are the core
63 // of the work for neighbor sharing swept under the rug.
64 // Basically, the way it works is that "give" methods return
65 // what would be the appropriate neighbor information so that you can
66 // use the set methods on the other region in order to set the neighbor
67 // information. For example, r0:crate 0 card 0 region 0 is the northern
68 // neighbor of r1:crate 0 card 1 region 0. Then to set the northern
69 // neighbor information you call r1.setNorthEt(r0.getNorthEt())
70 // That's why it's give insted of get. It doesn't return the region's
71 // northern neighbor information, it returns what would be its southern
72 // neighbor's northern neighbor information.
73 vector<unsigned short> L1RCTRegion::giveNorthEt() const {
74  std::vector<unsigned short> north(4);
75  for (int i = 0; i < 4; i++)
76  north.at(i) = getEtIn7Bits(3, i);
77  return north;
78 }
79 void L1RCTRegion::setNorthEt(const std::vector<unsigned short> &north) {
80  for (int i = 0; i < 4; i++)
81  totalRegionEt.at(i + 1) = north.at(i);
82 }
83 vector<unsigned short> L1RCTRegion::giveNorthHE_FG() const {
84  std::vector<unsigned short> north(4);
85  for (int i = 0; i < 4; i++)
86  north.at(i) = getHE_FGBit(3, i);
87  return north;
88 }
89 void L1RCTRegion::setNorthHE_FG(const std::vector<unsigned short> &north) {
90  for (int i = 0; i < 4; i++)
91  totalRegionHE_FG.at(i + 1) = north.at(i);
92 }
93 
94 vector<unsigned short> L1RCTRegion::giveSouthEt() const {
95  std::vector<unsigned short> south(4);
96  for (int i = 0; i < 4; i++)
97  south.at(i) = getEtIn7Bits(0, i);
98  return south;
99 }
100 void L1RCTRegion::setSouthEt(const std::vector<unsigned short> &south) {
101  for (int i = 0; i < 4; i++)
102  totalRegionEt.at(31 + i) = south.at(i);
103 }
104 
105 vector<unsigned short> L1RCTRegion::giveSouthHE_FG() const {
106  std::vector<unsigned short> south(4);
107  for (int i = 0; i < 4; i++)
108  south.at(i) = getHE_FGBit(0, i);
109  return south;
110 }
111 void L1RCTRegion::setSouthHE_FG(const std::vector<unsigned short> &south) {
112  for (int i = 0; i < 4; i++)
113  totalRegionHE_FG.at(31 + i) = south.at(i);
114 }
115 
116 vector<unsigned short> L1RCTRegion::giveWestEt() const {
117  std::vector<unsigned short> west(4);
118  for (int i = 0; i < 4; i++)
119  west.at(i) = getEtIn7Bits(i, 3);
120  return west;
121 }
122 void L1RCTRegion::setWestEt(const std::vector<unsigned short> &west) {
123  for (int i = 0; i < 4; i++)
124  totalRegionEt.at(6 * (i + 1)) = west.at(i);
125 }
126 
127 vector<unsigned short> L1RCTRegion::giveWestHE_FG() const {
128  std::vector<unsigned short> west(4);
129  for (int i = 0; i < 4; i++)
130  west.at(i) = getHE_FGBit(i, 3);
131  return west;
132 }
133 void L1RCTRegion::setWestHE_FG(const std::vector<unsigned short> &west) {
134  for (int i = 0; i < 4; i++)
135  totalRegionHE_FG.at(6 * (i + 1)) = west.at(i);
136 }
137 
138 vector<unsigned short> L1RCTRegion::giveEastEt() const {
139  std::vector<unsigned short> east(4);
140  for (int i = 0; i < 4; i++)
141  east.at(i) = getEtIn7Bits(i, 0);
142  return east;
143 }
144 void L1RCTRegion::setEastEt(const std::vector<unsigned short> &east) {
145  for (int i = 0; i < 4; i++)
146  totalRegionEt.at(6 * (i + 1) + 5) = east.at(i);
147 }
148 
149 vector<unsigned short> L1RCTRegion::giveEastHE_FG() const {
150  std::vector<unsigned short> east(4);
151  for (int i = 0; i < 4; i++)
152  east.at(i) = getHE_FGBit(i, 0);
153  return east;
154 }
155 void L1RCTRegion::setEastHE_FG(const std::vector<unsigned short> &east) {
156  for (int i = 0; i < 4; i++)
157  totalRegionHE_FG.at(6 * (i + 1) + 5) = east.at(i);
158 }
159 
160 unsigned short L1RCTRegion::giveNEEt() const {
161  unsigned short et = getEtIn7Bits(3, 0);
162  if (et > 7)
163  return 7;
164  else
165  return et;
166 }
167 unsigned short L1RCTRegion::giveNEHE_FG() const { return getHE_FGBit(3, 0); }
168 void L1RCTRegion::setNEEt(unsigned short ne) { totalRegionEt.at(5) = ne; }
169 void L1RCTRegion::setNEHE_FG(unsigned short ne) { totalRegionHE_FG.at(5) = ne; }
170 
171 unsigned short L1RCTRegion::giveNWEt() const {
172  unsigned short et = getEtIn7Bits(3, 3);
173  if (et > 7)
174  return 7;
175  else
176  return et;
177 }
178 unsigned short L1RCTRegion::giveNWHE_FG() const { return getHE_FGBit(3, 3); }
179 void L1RCTRegion::setNWEt(unsigned short nw) { totalRegionEt.at(0) = nw; }
180 void L1RCTRegion::setNWHE_FG(unsigned short nw) { totalRegionHE_FG.at(0) = nw; }
181 
182 unsigned short L1RCTRegion::giveSWEt() const {
183  unsigned short et = getEtIn7Bits(0, 3);
184  if (et > 7)
185  return 7;
186  else
187  return et;
188 }
189 unsigned short L1RCTRegion::giveSWHE_FG() const { return getHE_FGBit(0, 3); }
190 void L1RCTRegion::setSWEt(unsigned short sw) { totalRegionEt.at(30) = sw; }
191 void L1RCTRegion::setSWHE_FG(unsigned short sw) { totalRegionHE_FG.at(30) = sw; }
192 
193 unsigned short L1RCTRegion::giveSEEt() const {
194  unsigned short et = getEtIn7Bits(0, 0);
195  if (et > 7)
196  return 7;
197  else
198  return et;
199 }
200 unsigned short L1RCTRegion::giveSEHE_FG() const { return getHE_FGBit(0, 0); }
201 void L1RCTRegion::setSEEt(unsigned short se) { totalRegionEt.at(35) = se; }
202 void L1RCTRegion::setSEHE_FG(unsigned short se) { totalRegionHE_FG.at(35) = se; }
203 
205  std::cout << " 7 Bit Energies ";
206  for (int i = 0; i < 4; i++) {
207  std::cout << std::endl;
208  for (int j = 0; j < 4; j++) {
209  std::cout << " " << getEtIn7Bits(i, j) << " ";
210  }
211  }
212 
213  std::cout << std::endl << std::endl;
214  std::cout << " 9 Bit Energies ";
215  for (int i = 0; i < 4; i++) {
216  std::cout << std::endl;
217  for (int j = 0; j < 4; j++) {
218  std::cout << " " << getEtIn9Bits(i, j) << " ";
219  }
220  }
221 
222  std::cout << std::endl << std::endl;
223  std::cout << " HE || FG bit ";
224  for (int i = 0; i < 4; i++) {
225  std::cout << std::endl;
226  for (int j = 0; j < 4; j++) {
227  std::cout << " " << getHE_FGBit(i, j) << " ";
228  }
229  }
230 
231  std::cout << std::endl << std::endl;
232  std::cout << " Muon Bit ";
233  for (int i = 0; i < 4; i++) {
234  std::cout << std::endl;
235  for (int j = 0; j < 4; j++) {
236  std::cout << " " << getMuonBit(i, j) << " ";
237  }
238  }
239  std::cout << std::endl;
240 }
241 
243  std::cout << "North" << std::endl;
244  for (int i = 0; i < 4; i++)
245  std::cout << totalRegionEt.at(i + 1) << std::endl;
246 
247  std::cout << "West" << std::endl;
248  for (int i = 0; i < 4; i++)
249  std::cout << totalRegionEt.at(6 * (i + 1)) << std::endl;
250 
251  std::cout << "East" << std::endl;
252  for (int i = 0; i < 4; i++)
253  std::cout << totalRegionEt.at(6 * (i + 1) + 5) << std::endl;
254 
255  std::cout << "South" << std::endl;
256  for (int i = 0; i < 4; i++)
257  std::cout << totalRegionEt.at(31 + i) << std::endl;
258 
259  std::cout << "NE " << totalRegionEt.at(5) << std::endl;
260  std::cout << "SE " << totalRegionEt.at(35) << std::endl;
261  std::cout << "NW " << totalRegionEt.at(0) << std::endl;
262  std::cout << "SW " << totalRegionEt.at(30) << std::endl;
263 }
void setNEEt(unsigned short ne)
Definition: L1RCTRegion.cc:168
void setSWHE_FG(unsigned short sw)
Definition: L1RCTRegion.cc:191
std::vector< unsigned short > activityBit
Definition: L1RCTRegion.h:71
std::vector< unsigned short > giveEastHE_FG() const
Definition: L1RCTRegion.cc:149
void setNEHE_FG(unsigned short ne)
Definition: L1RCTRegion.cc:169
std::vector< unsigned short > giveSouthHE_FG() const
Definition: L1RCTRegion.cc:105
void setNorthHE_FG(const std::vector< unsigned short > &north)
Definition: L1RCTRegion.cc:89
std::vector< unsigned short > totalRegionEt
Definition: L1RCTRegion.h:65
unsigned short giveSEHE_FG() const
Definition: L1RCTRegion.cc:200
void setHE_FGBit(int i, int j, unsigned short HE_FG)
Definition: L1RCTRegion.cc:40
unsigned short getEtIn7Bits(int i, int j) const
Definition: L1RCTRegion.cc:25
void setNWHE_FG(unsigned short nw)
Definition: L1RCTRegion.cc:180
std::vector< unsigned short > giveNorthHE_FG() const
Definition: L1RCTRegion.cc:83
unsigned short getEtIn9Bits(int i, int j) const
Definition: L1RCTRegion.cc:45
unsigned short giveSWEt() const
Definition: L1RCTRegion.cc:182
unsigned short getActivityBit(int i, int j) const
Definition: L1RCTRegion.cc:60
void setWestHE_FG(const std::vector< unsigned short > &west)
Definition: L1RCTRegion.cc:133
void setSEEt(unsigned short se)
Definition: L1RCTRegion.cc:201
unsigned short giveNWHE_FG() const
Definition: L1RCTRegion.cc:178
unsigned short giveNEHE_FG() const
Definition: L1RCTRegion.cc:167
unsigned short getHE_FGBit(int i, int j) const
Definition: L1RCTRegion.cc:38
unsigned short getMuonBit(int i, int j) const
Definition: L1RCTRegion.cc:54
unsigned short giveNEEt() const
Definition: L1RCTRegion.cc:160
std::vector< unsigned short > giveEastEt() const
Definition: L1RCTRegion.cc:138
unsigned short giveSWHE_FG() const
Definition: L1RCTRegion.cc:189
void setSWEt(unsigned short sw)
Definition: L1RCTRegion.cc:190
std::vector< unsigned short > giveWestHE_FG() const
Definition: L1RCTRegion.cc:127
std::vector< unsigned short > giveSouthEt() const
Definition: L1RCTRegion.cc:94
std::vector< unsigned short > giveWestEt() const
Definition: L1RCTRegion.cc:116
void setSouthHE_FG(const std::vector< unsigned short > &south)
Definition: L1RCTRegion.cc:111
void setNorthEt(const std::vector< unsigned short > &north)
Definition: L1RCTRegion.cc:79
void setSEHE_FG(unsigned short se)
Definition: L1RCTRegion.cc:202
void setWestEt(const std::vector< unsigned short > &west)
Definition: L1RCTRegion.cc:122
std::vector< unsigned short > giveNorthEt() const
Definition: L1RCTRegion.cc:73
void print()
Definition: L1RCTRegion.cc:204
void setEtIn9Bits(int i, int j, unsigned short energy)
Definition: L1RCTRegion.cc:47
std::vector< unsigned short > etIn9Bits
Definition: L1RCTRegion.h:68
void setEastHE_FG(const std::vector< unsigned short > &east)
Definition: L1RCTRegion.cc:155
std::vector< unsigned short > muonBit
Definition: L1RCTRegion.h:70
void setEastEt(const std::vector< unsigned short > &east)
Definition: L1RCTRegion.cc:144
void setNWEt(unsigned short nw)
Definition: L1RCTRegion.cc:179
unsigned short giveNWEt() const
Definition: L1RCTRegion.cc:171
unsigned short giveSEEt() const
Definition: L1RCTRegion.cc:193
void setSouthEt(const std::vector< unsigned short > &south)
Definition: L1RCTRegion.cc:100
void setEtIn7Bits(int i, int j, unsigned short energy)
Definition: L1RCTRegion.cc:30
void setActivityBit(int i, int j, unsigned short activity)
Definition: L1RCTRegion.cc:58
std::vector< unsigned short > totalRegionHE_FG
Definition: L1RCTRegion.h:66
void setMuonBit(int i, int j, unsigned short muon)
Definition: L1RCTRegion.cc:56
void printEdges()
Definition: L1RCTRegion.cc:242