Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 12:52:53

0001 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
0002 #include "FWCore/Utilities/interface/Exception.h"
0003 #include <iostream>
0004 
0005 CaloTowerDetId::CaloTowerDetId() : DetId() {}
0006 
0007 CaloTowerDetId::CaloTowerDetId(uint32_t rawid) : DetId(rawid & 0xFFF0FFFFu) {}
0008 
0009 CaloTowerDetId::CaloTowerDetId(int ieta, int iphi) : DetId(Calo, SubdetId) {
0010   id_ |= ((ieta > 0) ? (0x2000 | ((ieta & 0x3F) << 7)) : (((-ieta) & 0x3f) << 7)) | (iphi & 0x7F);
0011 }
0012 
0013 CaloTowerDetId::CaloTowerDetId(const DetId& gen) {
0014   if (!gen.null() && (gen.det() != Calo || gen.subdetId() != SubdetId)) {
0015     throw cms::Exception("Invalid DetId")
0016         << "Cannot initialize CaloTowerDetId from " << std::hex << gen.rawId() << std::dec;
0017   }
0018   id_ = gen.rawId();
0019 }
0020 
0021 CaloTowerDetId& CaloTowerDetId::operator=(const DetId& gen) {
0022   if (!gen.null() && (gen.det() != Calo || gen.subdetId() != SubdetId)) {
0023     throw cms::Exception("Invalid DetId")
0024         << "Cannot assign CaloTowerDetId from " << std::hex << gen.rawId() << std::dec;
0025   }
0026   id_ = gen.rawId();
0027   return *this;
0028 }
0029 
0030 int CaloTowerDetId::iphi() const {
0031   int retval = id_ & 0x7F;
0032   return retval;
0033 }
0034 
0035 std::ostream& operator<<(std::ostream& s, const CaloTowerDetId& id) {
0036   return s << "Tower (" << id.ieta() << "," << id.iphi() << ")";
0037 }