Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 13:07:37

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   //      CaloGenericDetId() {}
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);  // to check valid 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