File indexing completed on 2024-04-06 12:04:17
0001
0002
0003
0004
0005
0006 #include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
0007 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0008 #include "DataFormats/HcalDetId/interface/HcalTrigTowerDetId.h"
0009 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h"
0010 #include "DataFormats/HcalDetId/interface/HcalCastorDetId.h"
0011 #include "DataFormats/HcalDetId/interface/HcalCalibDetId.h"
0012 #include <iostream>
0013 #include <cstdlib>
0014
0015 HcalOtherSubdetector HcalGenericDetId::otherSubdet() const {
0016 if (HcalSubdetector(subdetId()) != HcalOther)
0017 return HcalOtherEmpty;
0018 return HcalOtherSubdetector((rawId() >> 20) & 0x1F);
0019 }
0020
0021 HcalGenericDetId::HcalGenericSubdetector HcalGenericDetId::genericSubdet() const {
0022 if (null())
0023 return HcalGenEmpty;
0024 switch (det()) {
0025 case Calo:
0026 switch (subdetId()) {
0027 case HcalZDCDetId::SubdetectorId:
0028 return HcalGenZDC;
0029 case HcalCastorDetId::SubdetectorId:
0030 return HcalGenCastor;
0031 default:
0032 return HcalGenUnknown;
0033 }
0034 case Hcal:
0035 switch (HcalSubdetector(subdetId())) {
0036 case 0:
0037 return HcalGenEmpty;
0038 case HcalBarrel:
0039 return HcalGenBarrel;
0040 case HcalEndcap:
0041 return HcalGenEndcap;
0042 case HcalOuter:
0043 return HcalGenOuter;
0044 case HcalForward:
0045 return HcalGenForward;
0046 case HcalTriggerTower:
0047 return HcalGenTriggerTower;
0048 case HcalOther:
0049 switch (otherSubdet()) {
0050 case HcalCalibration:
0051 return HcalGenCalibration;
0052 default:
0053 return HcalGenUnknown;
0054 }
0055 default:
0056 return HcalGenUnknown;
0057 }
0058 default:
0059 return HcalGenUnknown;
0060 }
0061 return HcalGenUnknown;
0062 }
0063
0064 bool HcalGenericDetId::isHcalDetId() const {
0065 HcalGenericSubdetector subdet = genericSubdet();
0066 return subdet == HcalGenBarrel || subdet == HcalGenEndcap || subdet == HcalGenOuter || subdet == HcalGenForward;
0067 }
0068
0069 bool HcalGenericDetId::isHcalCalibDetId() const {
0070 HcalGenericSubdetector subdet = genericSubdet();
0071 return subdet == HcalGenCalibration;
0072 }
0073
0074 bool HcalGenericDetId::isHcalTrigTowerDetId() const {
0075 HcalGenericSubdetector subdet = genericSubdet();
0076 return subdet == HcalGenTriggerTower;
0077 }
0078
0079 bool HcalGenericDetId::isHcalZDCDetId() const {
0080 HcalGenericSubdetector subdet = genericSubdet();
0081 return subdet == HcalGenZDC;
0082 }
0083
0084 bool HcalGenericDetId::isHcalCastorDetId() const {
0085 HcalGenericSubdetector subdet = genericSubdet();
0086 return subdet == HcalGenCastor;
0087 }
0088
0089 std::ostream& operator<<(std::ostream& s, const HcalGenericDetId& id) {
0090 if (id.null())
0091 s << "(Null Id)";
0092 else
0093 switch (id.genericSubdet()) {
0094 case HcalGenericDetId::HcalGenBarrel:
0095 case HcalGenericDetId::HcalGenEndcap:
0096 case HcalGenericDetId::HcalGenOuter:
0097 case HcalGenericDetId::HcalGenForward:
0098 s << HcalDetId(id);
0099 break;
0100 case HcalGenericDetId::HcalGenTriggerTower:
0101 s << HcalTrigTowerDetId(id);
0102 break;
0103 case HcalGenericDetId::HcalGenZDC:
0104 s << HcalZDCDetId(id);
0105 break;
0106 case HcalGenericDetId::HcalGenCastor:
0107 s << HcalCastorDetId(id);
0108 break;
0109 case HcalGenericDetId::HcalGenCalibration:
0110 s << HcalCalibDetId(id);
0111 break;
0112 default:
0113 s << "(Hcal Unknown Id: 0x" << std::hex << id.rawId() << std::dec << ')';
0114 }
0115 return s;
0116 }