![]() |
![]() |
00001 #ifndef CALOGEOMETRY_CALOGENERICDETID_H 00002 #define CALOGEOMETRY_CALOGENERICDETID_H 00003 00004 #include "DataFormats/DetId/interface/DetId.h" 00005 #include "DataFormats/EcalDetId/interface/EBDetId.h" 00006 #include "DataFormats/EcalDetId/interface/EEDetId.h" 00007 #include "DataFormats/EcalDetId/interface/ESDetId.h" 00008 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h" 00009 #include "DataFormats/HcalDetId/interface/HcalCastorDetId.h" 00010 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h" 00011 00012 class CaloGenericDetId : public DetId 00013 { 00014 public: 00015 // CaloGenericDetId() {} 00016 CaloGenericDetId( uint32_t rawid ) : DetId( rawid ) {} 00017 00018 CaloGenericDetId( const DetId& id ) : DetId ( id ) {} 00019 00020 CaloGenericDetId( DetId::Detector iDet , 00021 int iSub , 00022 uint32_t iDenseIndex ) ; // to check valid iDenseIndex 00023 00024 bool validDetId() const ; 00025 00026 uint32_t denseIndex() const ; 00027 00028 uint32_t sizeForDenseIndexing() const ; 00029 00030 bool isEcal() const { return det() == DetId::Ecal ; } 00031 bool isEB() const { return isEcal() && subdetId() == EBDetId::Subdet ; } 00032 bool isEE() const { return isEcal() && subdetId() == EEDetId::Subdet ; } 00033 bool isES() const { return isEcal() && subdetId() == ESDetId::Subdet ; } 00034 bool isCalo() const { return det() == DetId::Calo ; } 00035 bool isHcal() const { return det() == DetId::Hcal ; } 00036 bool isZDC() const { return isCalo() && subdetId() == HcalZDCDetId::SubdetectorId ; } 00037 bool isCastor() const { return isCalo() && subdetId() == HcalCastorDetId::SubdetectorId ; } 00038 bool isCaloTower() const { return isCalo() && subdetId() == CaloTowerDetId::SubdetId ; } 00039 }; 00040 00041 std::ostream& operator<<(std::ostream& s,const CaloGenericDetId& id); 00042 00043 00044 #endif