File indexing completed on 2024-04-06 12:04:25
0001
0002
0003 #include "DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h"
0004
0005
0006 L1CaloRegionDetId::L1CaloRegionDetId() : DetId() {}
0007
0008
0009 L1CaloRegionDetId::L1CaloRegionDetId(uint32_t rawid) : DetId(rawid) {}
0010
0011
0012
0013 L1CaloRegionDetId::L1CaloRegionDetId(unsigned ieta, unsigned iphi) : DetId(Calo, 2) {
0014 id_ |= (ieta & 0x1f) | ((iphi & 0x1f) << 5);
0015 }
0016
0017
0018 L1CaloRegionDetId::L1CaloRegionDetId(unsigned icrate, unsigned icard, unsigned irgn) : DetId(Calo, 2) {
0019 int ieta = 0;
0020 int iphi = 0;
0021
0022
0023 int phi_index = icrate % 9;
0024 if ((icard == 0) || (icard == 2) || (icard == 4))
0025 phi_index = phi_index * 2;
0026 else if ((icard == 1) || (icard == 3) || (icard == 5))
0027 phi_index = phi_index * 2 + 1;
0028 else if (icard == 6)
0029 phi_index = phi_index * 2 + irgn;
0030
0031 else if (icard == 999)
0032 phi_index = phi_index * 2 + (irgn / 4);
0033 iphi = (22 - phi_index) % 18;
0034
0035
0036 int eta_index = 0;
0037 if (icard < 6)
0038 eta_index = (icard / 2) * 2 + irgn;
0039 else if (icard == 6)
0040 eta_index = 6;
0041
0042 else if (icard == 999)
0043 eta_index = (irgn % 4) + 7;
0044
0045 if (icrate < 9)
0046 ieta = 10 - eta_index;
0047 else if (icrate >= 9)
0048 ieta = 11 + eta_index;
0049
0050
0051 id_ |= (ieta & 0x1f) | ((iphi & 0x1f) << 5);
0052 }
0053
0054
0055 unsigned L1CaloRegionDetId::rctCrate() const {
0056 unsigned phiCrate = ((N_PHI + 4 - iphi()) % N_PHI) / 2;
0057 return (ieta() < (N_ETA / 2) ? phiCrate : phiCrate + N_PHI / 2);
0058 }
0059
0060
0061 unsigned L1CaloRegionDetId::rctCard() const {
0062 unsigned card = 999;
0063 unsigned rct_phi_index = (22 - iphi()) % 18;
0064 if ((ieta() == 4) || (ieta() == 17)) {
0065 card = 6;
0066 } else if ((ieta() > 4) && (ieta() <= 10)) {
0067 unsigned index = (ieta() - 5) / 2;
0068 card = ((2 - index) * 2) + (rct_phi_index % 2);
0069 } else if ((ieta() >= 11) && (ieta() < 17)) {
0070 unsigned index = (ieta() - 11) / 2;
0071 card = (index * 2) + (rct_phi_index % 2);
0072 }
0073 return card;
0074 }
0075
0076
0077 unsigned L1CaloRegionDetId::rctRegion() const {
0078 unsigned rgn = 999;
0079 unsigned rct_phi_index = (22 - iphi()) % 18;
0080 if (ieta() < 4) {
0081 rgn = (3 - ieta()) + 4 * (rct_phi_index % 2);
0082 } else if (ieta() > 17) {
0083 rgn = (ieta() - 18) + 4 * (rct_phi_index % 2);
0084 } else if ((ieta() == 4) || (ieta() == 17)) {
0085 rgn = (rct_phi_index % 2);
0086 } else if ((ieta() > 4) && (ieta() <= 10)) {
0087 rgn = (ieta() % 2);
0088 } else if ((ieta() >= 11) && (ieta() < 17)) {
0089 rgn = ((ieta() - 1) % 2);
0090 }
0091 return rgn;
0092 }