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/HcalDetId.h" 00009 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h" 00010 #include "DataFormats/HcalDetId/interface/HcalCastorDetId.h" 00011 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h" 00012 00013 class CaloGenericDetId : public DetId 00014 { 00015 public: 00016 // CaloGenericDetId() {} 00017 CaloGenericDetId( uint32_t rawid ) : DetId( rawid ) {} 00018 00019 CaloGenericDetId( const DetId& id ) : DetId ( id ) {} 00020 00021 CaloGenericDetId( DetId::Detector iDet , 00022 int iSub , 00023 uint32_t iDenseIndex ) ; // to check valid iDenseIndex 00024 00025 bool validDetId() const ; 00026 00027 uint32_t denseIndex() const ; 00028 00029 uint32_t sizeForDenseIndexing() const ; 00030 00031 bool isEcal() const { return det() == DetId::Ecal ; } 00032 bool isEB() const { return isEcal() && subdetId() == EBDetId::Subdet ; } 00033 bool isEE() const { return isEcal() && subdetId() == EEDetId::Subdet ; } 00034 bool isES() const { return isEcal() && subdetId() == ESDetId::Subdet ; } 00035 bool isHcal() const { return det() == DetId::Hcal ; } 00036 bool isHB() const { return isHcal() && subdetId() == HcalBarrel ; } 00037 bool isHE() const { return isHcal() && subdetId() == HcalEndcap ; } 00038 bool isHO() const { return isHcal() && subdetId() == HcalOuter ; } 00039 bool isHF() const { return isHcal() && subdetId() == HcalForward ; } 00040 bool isCalo() const { return det() == DetId::Calo ; } 00041 bool isZDC() const { return isCalo() && subdetId() == HcalZDCDetId::SubdetectorId ; } 00042 bool isCastor() const { return isCalo() && subdetId() == HcalCastorDetId::SubdetectorId ; } 00043 bool isCaloTower() const { return isCalo() && subdetId() == CaloTowerDetId::SubdetId ; } 00044 }; 00045 00046 std::ostream& operator<<(std::ostream& s,const CaloGenericDetId& id); 00047 00048 00049 #endif