File indexing completed on 2024-04-06 12:21:36
0001 #include "L1Trigger/RegionalCaloTrigger/interface/L1RCTNeighborMap.h"
0002
0003 #include <vector>
0004 using std::vector;
0005
0006 vector<int> L1RCTNeighborMap::north(int crate, int card, int region) {
0007 std::vector<int> north(3);
0008 int newregion(0), newcard(0), newcrate(0);
0009 if (card == 0 || card == 2 || card == 4) {
0010 newcard = card + 1;
0011 newregion = region;
0012 if (crate != 0 && crate != 9)
0013 newcrate = crate - 1;
0014 else
0015 newcrate = crate + 8;
0016 } else if (card == 1 || card == 3 || card == 5) {
0017 newcard = card - 1;
0018 newregion = region;
0019 newcrate = crate;
0020 } else if (card == 6) {
0021 if (region == 0) {
0022 newcard = card;
0023 newregion = region + 1;
0024 if (crate != 0 && crate != 9)
0025 newcrate = crate - 1;
0026 else
0027 newcrate = crate + 8;
0028 } else {
0029 newcard = card;
0030 newregion = region - 1;
0031 newcrate = crate;
0032 }
0033 }
0034 north.at(0) = newcrate;
0035 north.at(1) = newcard;
0036 north.at(2) = newregion;
0037 return north;
0038 }
0039
0040 vector<int> L1RCTNeighborMap::south(int crate, int card, int region) {
0041 int newcrate(0), newcard(0), newregion(0);
0042 std::vector<int> south(3);
0043 if (card == 0 || card == 2 || card == 4) {
0044 newcard = card + 1;
0045 newregion = region;
0046 newcrate = crate;
0047 } else if (card == 1 || card == 3 || card == 5) {
0048 newcard = card - 1;
0049 newregion = region;
0050 if (crate != 8 && crate != 17)
0051 newcrate = crate + 1;
0052 else
0053 newcrate = crate - 8;
0054 } else if (card == 6) {
0055 if (region == 0) {
0056 newcrate = crate;
0057 newcard = card;
0058 newregion = region + 1;
0059 } else {
0060 newcard = card;
0061 newregion = region - 1;
0062 if (crate != 8 && crate != 17)
0063 newcrate = crate + 1;
0064 else
0065 newcrate = crate - 8;
0066 }
0067 }
0068 south.at(0) = newcrate;
0069 south.at(1) = newcard;
0070 south.at(2) = newregion;
0071 return south;
0072 }
0073
0074 vector<int> L1RCTNeighborMap::west(int crate, int card, int region) {
0075 int newcrate(0), newcard(0), newregion(0);
0076 std::vector<int> west(3);
0077 if (crate < 9) {
0078 newcrate = crate;
0079 if (card != 6) {
0080 if (region == 0) {
0081 newcard = card;
0082 newregion = region + 1;
0083 } else {
0084 if (card != 4 && card != 5) {
0085 newcard = card + 2;
0086 newregion = region - 1;
0087 } else if (card == 4) {
0088 newcard = 6;
0089 newregion = 0;
0090 } else if (card == 5) {
0091 newcard = 6;
0092 newregion = 1;
0093 }
0094 }
0095 } else {
0096 newcrate = -1;
0097 newcard = -1;
0098 newregion = -1;
0099 }
0100 } else {
0101 if (card == 0 || card == 1) {
0102 if (region == 0) {
0103 newcrate = crate - 9;
0104 newregion = region;
0105 newcard = card;
0106 } else {
0107 newcrate = crate;
0108 newregion = region - 1;
0109 newcard = card;
0110 }
0111 } else if (card != 6) {
0112 newcrate = crate;
0113 if (region == 0) {
0114 newcard = card - 2;
0115 newregion = region + 1;
0116 } else {
0117 newcard = card;
0118 newregion = region - 1;
0119 }
0120 } else if (card == 6) {
0121 newcrate = crate;
0122 newregion = 1;
0123 if (region == 0)
0124 newcard = 4;
0125 else
0126 newcard = 5;
0127 }
0128 }
0129 west.at(0) = newcrate;
0130 west.at(1) = newcard;
0131 west.at(2) = newregion;
0132 return west;
0133 }
0134
0135 vector<int> L1RCTNeighborMap::east(int crate, int card, int region) {
0136 int newcrate(0), newcard(0), newregion(0);
0137 std::vector<int> east(3);
0138 if (crate < 9) {
0139 if (card != 0 && card != 1 && card != 6) {
0140 newcrate = crate;
0141 if (region == 0) {
0142 newregion = region + 1;
0143 newcard = card - 2;
0144 } else {
0145 newregion = region - 1;
0146 newcard = card;
0147 }
0148 } else if (card == 0 || card == 1) {
0149 newcard = card;
0150 if (region == 0) {
0151 newcrate = crate + 9;
0152 newregion = region;
0153 } else {
0154 newcrate = crate;
0155 newregion = region - 1;
0156 }
0157 } else if (card == 6) {
0158 newcrate = crate;
0159 newregion = 1;
0160 if (region == 0)
0161 newcard = 4;
0162 else
0163 newcard = 5;
0164 }
0165 } else {
0166 newcrate = crate;
0167 if (card != 6) {
0168 if (region == 0) {
0169 newcard = card;
0170 newregion = region + 1;
0171 } else {
0172 if (card != 4 && card != 5) {
0173 newcard = card + 2;
0174 newregion = region - 1;
0175 } else if (card == 4) {
0176 newcard = 6;
0177 newregion = 0;
0178 } else if (card == 5) {
0179 newcard = 6;
0180 newregion = 1;
0181 }
0182 }
0183 } else {
0184 newcrate = -1;
0185 newcard = -1;
0186 newregion = -1;
0187 }
0188 }
0189 east.at(0) = newcrate;
0190 east.at(1) = newcard;
0191 east.at(2) = newregion;
0192 return east;
0193 }
0194
0195 vector<int> L1RCTNeighborMap::se(int crate, int card, int region) {
0196 int newcrate(0), newcard(0), newregion(0);
0197 std::vector<int> se(3);
0198 if (crate < 9) {
0199 if (card == 0) {
0200 if (region == 0) {
0201 newcrate = crate + 9;
0202 newregion = region;
0203 newcard = 1;
0204 } else {
0205 newcrate = crate;
0206 newregion = 0;
0207 newcard = 1;
0208 }
0209 } else if (card == 1) {
0210 if (region == 0) {
0211 if (crate != 8)
0212 newcrate = crate + 10;
0213 else
0214 newcrate = 9;
0215 newregion = 0;
0216 newcard = 0;
0217 } else {
0218 if (crate != 8)
0219 newcrate = crate + 1;
0220 else
0221 newcrate = 0;
0222 newregion = 0;
0223 newcard = 0;
0224 }
0225 } else if (card == 2 || card == 4) {
0226 newcrate = crate;
0227 newregion = !region;
0228 newcard = card - 1 + 2 * region;
0229 } else if (card == 5 || card == 3) {
0230 newregion = !region;
0231 newcard = card - 3 + 2 * region;
0232 if (crate != 8)
0233 newcrate = crate + 1;
0234 else
0235 newcrate = 0;
0236 } else if (card == 6) {
0237 if (region == 0) {
0238 newcard = 5;
0239 newregion = 1;
0240 newcrate = crate;
0241 } else {
0242 newcard = 4;
0243 newregion = 1;
0244 if (crate != 8)
0245 newcrate = crate + 1;
0246 else
0247 newcrate = 0;
0248 }
0249 }
0250 } else {
0251 if (card == 0 || card == 2) {
0252 newregion = !region;
0253 newcrate = crate;
0254 newcard = card + 2 * region + 1;
0255 } else if (card == 1 || card == 3) {
0256 newregion = !region;
0257 newcard = card - 1 + 2 * region;
0258 if (crate != 17)
0259 newcrate = crate + 1;
0260 else
0261 newcrate = 9;
0262 } else if (card == 4) {
0263 newcrate = crate;
0264 if (region == 0) {
0265 newregion = 1;
0266 newcard = 5;
0267 } else {
0268 newregion = 1;
0269 newcard = 6;
0270 }
0271 } else if (card == 5) {
0272 if (region == 0) {
0273 newcard = 4;
0274 newregion = 1;
0275 } else {
0276 newcard = 6;
0277 newregion = 0;
0278 }
0279 if (crate != 17)
0280 newcrate = crate + 1;
0281 else
0282 newcrate = 9;
0283 } else if (card == 6) {
0284 newcard = -1;
0285 newregion = -1;
0286 newcrate = -1;
0287 }
0288 }
0289
0290 se.at(0) = newcrate;
0291 se.at(1) = newcard;
0292 se.at(2) = newregion;
0293 return se;
0294 }
0295
0296 vector<int> L1RCTNeighborMap::sw(int crate, int card, int region) {
0297 int newcrate(0), newcard(0), newregion(0);
0298 std::vector<int> sw(3);
0299 if (crate > 8) {
0300 if (card == 0) {
0301 if (region == 0) {
0302 newcrate = crate - 9;
0303 newregion = region;
0304 newcard = 1;
0305 } else {
0306 newcrate = crate;
0307 newregion = 0;
0308 newcard = 1;
0309 }
0310 } else if (card == 1) {
0311 if (region == 0) {
0312 if (crate != 17)
0313 newcrate = crate - 8;
0314 else
0315 newcrate = 0;
0316 newregion = 0;
0317 newcard = 0;
0318 } else {
0319 if (crate != 17)
0320 newcrate = crate + 1;
0321 else
0322 newcrate = 9;
0323 newregion = 0;
0324 newcard = 0;
0325 }
0326 } else if (card == 2 || card == 4) {
0327 newcrate = crate;
0328 newregion = !region;
0329 newcard = card - 1 + 2 * region;
0330 } else if (card == 5 || card == 3) {
0331 newregion = !region;
0332 newcard = card - 3 + 2 * region;
0333 if (crate != 17)
0334 newcrate = crate + 1;
0335 else
0336 newcrate = 9;
0337 } else if (card == 6) {
0338 if (region == 0) {
0339 newcard = 5;
0340 newregion = 1;
0341 newcrate = crate;
0342 } else {
0343 newcard = 4;
0344 newregion = 1;
0345 if (crate != 17)
0346 newcrate = crate + 1;
0347 else
0348 newcrate = 9;
0349 }
0350 }
0351 } else {
0352 if (card == 0 || card == 2) {
0353 newregion = !region;
0354 newcrate = crate;
0355 newcard = card + 1 + 2 * region;
0356 } else if (card == 1 || card == 3) {
0357 newregion = !region;
0358 newcard = card - 1 + 2 * region;
0359 if (crate != 8)
0360 newcrate = crate + 1;
0361 else
0362 newcrate = 0;
0363 } else if (card == 4) {
0364 newcrate = crate;
0365 if (region == 0) {
0366 newregion = 1;
0367 newcard = 5;
0368 } else {
0369 newregion = 1;
0370 newcard = 6;
0371 }
0372 } else if (card == 5) {
0373 if (region == 0) {
0374 newcard = 4;
0375 newregion = 1;
0376 } else {
0377 newcard = 6;
0378 newregion = 0;
0379 }
0380 if (crate != 8)
0381 newcrate = crate + 1;
0382 else
0383 newcrate = 0;
0384 } else if (card == 6) {
0385 newcard = -1;
0386 newregion = -1;
0387 newcrate = -1;
0388 }
0389 }
0390
0391 sw.at(0) = newcrate;
0392 sw.at(1) = newcard;
0393 sw.at(2) = newregion;
0394 return sw;
0395 }
0396
0397 vector<int> L1RCTNeighborMap::ne(int crate, int card, int region) {
0398 int newcrate(0), newcard(0), newregion(0);
0399 std::vector<int> ne(3);
0400 if (crate < 9) {
0401 if (card == 0) {
0402 newregion = 0;
0403 newcard = 1;
0404 if (region == 0) {
0405 if (crate != 0)
0406 newcrate = crate + 8;
0407 else
0408 newcrate = 17;
0409 } else {
0410 if (crate != 0)
0411 newcrate = crate - 1;
0412 else
0413 newcrate = 8;
0414 }
0415 } else if (card == 1) {
0416 newregion = 0;
0417 newcard = 0;
0418 if (region == 0)
0419 newcrate = crate + 9;
0420 else
0421 newcrate = crate;
0422 } else if (card == 2 || card == 4) {
0423 newregion = !region;
0424 newcard = card - 1 + 2 * region;
0425 if (crate != 0)
0426 newcrate = crate - 1;
0427 else
0428 newcrate = 8;
0429 } else if (card == 5 || card == 3) {
0430 newregion = !region;
0431 newcard = card - 3 + 2 * region;
0432 newcrate = crate;
0433 } else if (card == 6) {
0434 newregion = 1;
0435 if (region == 0) {
0436 newcard = 5;
0437 if (crate != 0)
0438 newcrate = crate - 1;
0439 else
0440 newcrate = 8;
0441 } else {
0442 newcard = 4;
0443 newcrate = crate;
0444 }
0445 }
0446 } else {
0447 if (card == 0 || card == 2) {
0448 newregion = !region;
0449 newcard = card + 1 + 2 * region;
0450 if (crate != 9)
0451 newcrate = crate - 1;
0452 else
0453 newcrate = 17;
0454 } else if (card == 1 || card == 3) {
0455 newregion = !region;
0456 newcard = card - 1 + 2 * region;
0457 newcrate = crate;
0458 } else if (card == 4) {
0459 newregion = 1;
0460 if (crate != 9)
0461 newcrate = crate - 1;
0462 else
0463 newcrate = 17;
0464 if (region == 0)
0465 newcard = 5;
0466 else
0467 newcard = 6;
0468 } else if (card == 5) {
0469 newregion = !region;
0470 newcrate = crate;
0471 if (region == 0)
0472 newcard = 4;
0473 else
0474 newcard = 6;
0475 } else if (card == 6) {
0476 newcrate = -1;
0477 newcard = -1;
0478 newregion = -1;
0479 }
0480 }
0481 ne.at(0) = newcrate;
0482 ne.at(1) = newcard;
0483 ne.at(2) = newregion;
0484 return ne;
0485 }
0486
0487 vector<int> L1RCTNeighborMap::nw(int crate, int card, int region) {
0488 int newcrate(0), newcard(0), newregion(0);
0489 std::vector<int> nw(3);
0490 if (crate > 8) {
0491 if (card == 0) {
0492 newregion = 0;
0493 newcard = 1;
0494 if (region == 0) {
0495 if (crate != 9)
0496 newcrate = crate - 10;
0497 else
0498 newcrate = 8;
0499 } else {
0500 if (crate != 9)
0501 newcrate = crate - 1;
0502 else
0503 newcrate = 17;
0504 }
0505 } else if (card == 1) {
0506 newregion = 0;
0507 newcard = 0;
0508 if (region == 0)
0509 newcrate = crate - 9;
0510 else
0511 newcrate = crate;
0512 } else if (card == 2 || card == 4) {
0513 newregion = !region;
0514 newcard = card - 1 + 2 * region;
0515 if (crate != 9)
0516 newcrate = crate - 1;
0517 else
0518 newcrate = 17;
0519 } else if (card == 5 || card == 3) {
0520 newregion = !region;
0521 newcard = card - 3 + 2 * region;
0522 newcrate = crate;
0523 } else if (card == 6) {
0524 newregion = 1;
0525 if (region == 0) {
0526 newcard = 5;
0527 if (crate != 9)
0528 newcrate = crate - 1;
0529 else
0530 newcrate = 17;
0531 } else {
0532 newcard = 4;
0533 newcrate = crate;
0534 }
0535 }
0536 } else {
0537 if (card == 0 || card == 2) {
0538 newregion = !region;
0539 newcard = card + 1 + 2 * region;
0540 if (crate != 0)
0541 newcrate = crate - 1;
0542 else
0543 newcrate = 8;
0544 } else if (card == 1 || card == 3) {
0545 newregion = !region;
0546 newcard = card - 1 + 2 * region;
0547 newcrate = crate;
0548 } else if (card == 4) {
0549 newregion = 1;
0550 if (crate != 0)
0551 newcrate = crate - 1;
0552 else
0553 newcrate = 8;
0554 if (region == 0)
0555 newcard = 5;
0556 else
0557 newcard = 6;
0558 } else if (card == 5) {
0559 newregion = !region;
0560 newcrate = crate;
0561 if (region == 0)
0562 newcard = 4;
0563 else
0564 newcard = 6;
0565 } else if (card == 6) {
0566 newcrate = -1;
0567 newcard = -1;
0568 newregion = -1;
0569 }
0570 }
0571 nw.at(0) = newcrate;
0572 nw.at(1) = newcard;
0573 nw.at(2) = newregion;
0574 return nw;
0575 }