File indexing completed on 2023-03-17 13:02:28
0001 #ifndef CALOGEOMETRY_CALOGENERICDETID_H
0002 #define CALOGEOMETRY_CALOGENERICDETID_H
0003
0004 #include "DataFormats/DetId/interface/DetId.h"
0005 #include "DataFormats/EcalDetId/interface/EBDetId.h"
0006 #include "DataFormats/EcalDetId/interface/EEDetId.h"
0007 #include "DataFormats/EcalDetId/interface/ESDetId.h"
0008 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h"
0009 #include "DataFormats/HcalDetId/interface/HcalCastorDetId.h"
0010 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h"
0011
0012 class CaloGenericDetId : public DetId {
0013 public:
0014
0015 CaloGenericDetId(uint32_t rawid) : DetId(rawid) {}
0016
0017 CaloGenericDetId(const DetId& id) : DetId(id) {}
0018
0019 CaloGenericDetId(DetId::Detector iDet, int iSub,
0020 uint32_t iDenseIndex);
0021
0022 bool validDetId() const;
0023
0024 uint32_t denseIndex() const;
0025
0026 uint32_t sizeForDenseIndexing() const;
0027
0028 bool isEcal() const { return det() == DetId::Ecal; }
0029 bool isEB() const { return isEcal() && subdetId() == EBDetId::Subdet; }
0030 bool isEE() const { return isEcal() && subdetId() == EEDetId::Subdet; }
0031 bool isES() const { return isEcal() && subdetId() == ESDetId::Subdet; }
0032 bool isCalo() const { return det() == DetId::Calo; }
0033 bool isHcal() const { return det() == DetId::Hcal; }
0034 bool isZDC() const { return isCalo() && subdetId() == HcalZDCDetId::SubdetectorId; }
0035 bool isCastor() const { return isCalo() && subdetId() == HcalCastorDetId::SubdetectorId; }
0036 bool isCaloTower() const { return isCalo() && subdetId() == CaloTowerDetId::SubdetId; }
0037 };
0038
0039 std::ostream& operator<<(std::ostream& s, const CaloGenericDetId& id);
0040
0041 #endif