CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/Geometry/CaloGeometry/interface/CaloGenericDetId.h

Go to the documentation of this file.
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