File indexing completed on 2024-04-06 12:04:46
0001 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
0002
0003 int CSCDetId::triggerSector() const {
0004
0005
0006 int result;
0007 int ring = this->ring();
0008 int station = this->station();
0009 int chamber = this->chamber();
0010
0011 if (station > 1 && ring > 1) {
0012 result = ((static_cast<unsigned>(chamber - 3) & 0x7f) / 6) + 1;
0013 } else {
0014 result = (station != 1) ? ((static_cast<unsigned>(chamber - 2) & 0x1f) / 3) + 1 :
0015 ((static_cast<unsigned>(chamber - 3) & 0x7f) / 6) + 1;
0016 }
0017
0018
0019 return (result <= 6) ? result : 6;
0020 }
0021
0022 int CSCDetId::triggerCscId() const {
0023
0024
0025 int result;
0026 int ring = this->ring();
0027 int station = this->station();
0028 int chamber = this->chamber();
0029
0030 if (station == 1) {
0031 result = (chamber) % 3 + 1;
0032 switch (ring) {
0033 case 1:
0034 break;
0035 case 2:
0036 result += 3;
0037 break;
0038 case 3:
0039 result += 6;
0040 break;
0041 }
0042 } else {
0043 if (ring == 1) {
0044 result = (chamber + 1) % 3 + 1;
0045 } else {
0046 result = (chamber + 3) % 6 + 4;
0047 }
0048 }
0049 return result;
0050 }
0051
0052 unsigned short CSCDetId::iChamberType(unsigned short istation, unsigned short iring) {
0053 int i = 2 * istation + iring;
0054 if (istation == 1) {
0055 --i;
0056 if (i > 4)
0057 i = 1;
0058 }
0059 return i;
0060 }
0061
0062 bool CSCDetId::isME1a() const { return iChamberType(station(), ring()) == 1; }
0063 bool CSCDetId::isME1b() const { return iChamberType(station(), ring()) == 2; }
0064 bool CSCDetId::isME11() const { return isME1a() or isME1b(); }
0065 bool CSCDetId::isME12() const { return iChamberType(station(), ring()) == 3; }
0066 bool CSCDetId::isME13() const { return iChamberType(station(), ring()) == 4; }
0067 bool CSCDetId::isME21() const { return iChamberType(station(), ring()) == 5; }
0068 bool CSCDetId::isME22() const { return iChamberType(station(), ring()) == 6; }
0069 bool CSCDetId::isME31() const { return iChamberType(station(), ring()) == 7; }
0070 bool CSCDetId::isME32() const { return iChamberType(station(), ring()) == 8; }
0071 bool CSCDetId::isME41() const { return iChamberType(station(), ring()) == 9; }
0072 bool CSCDetId::isME42() const { return iChamberType(station(), ring()) == 10; }
0073
0074 std::string CSCDetId::chamberName(int endcap, int station, int ring, int chamber) {
0075 const std::string eSign = endcap == 1 ? "+" : "-";
0076 return "ME" + eSign + std::to_string(station) + "/" + std::to_string(ring) + "/" + std::to_string(chamber);
0077 }
0078
0079 std::string CSCDetId::layerName(int endcap, int station, int ring, int chamber, int layer) {
0080 const std::string eSign = endcap == 1 ? "+" : "-";
0081 return "ME" + eSign + std::to_string(station) + "/" + std::to_string(ring) + "/" + std::to_string(chamber) + "/" +
0082 std::to_string(layer);
0083 }
0084
0085 std::string CSCDetId::chamberName(int chamberType) {
0086
0087 const unsigned stations[10] = {1, 1, 1, 1, 2, 2, 3, 3, 4, 4};
0088 const std::string rings[10] = {"A", "B", "2", "3", "1", "2", "1", "2", "1", "2"};
0089 return "ME" + std::to_string(stations[chamberType - 1]) + rings[chamberType - 1];
0090 }
0091
0092 std::string CSCDetId::chamberName() const { return chamberName(endcap(), station(), ring(), chamber()); }
0093
0094 std::string CSCDetId::layerName() const { return layerName(endcap(), station(), ring(), chamber(), layer()); }
0095
0096 std::ostream& operator<<(std::ostream& os, const CSCDetId& id) {
0097
0098
0099 os << " E:" << id.endcap() << " S:" << id.station() << " R:" << id.ring() << " C:" << id.chamber()
0100 << " L:" << id.layer();
0101 return os;
0102 }