CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10/src/DataFormats/CaloTowers/interface/CaloTowerDetId.h

Go to the documentation of this file.
00001 #ifndef DATAFORMATS_CALOTOWERS_CALOTOWERDETID_H
00002 #define DATAFORMATS_CALOTOWERS_CALOTOWERDETID_H 1
00003 
00004 #include "DataFormats/DetId/interface/DetId.h"
00005 
00014 class CaloTowerDetId : public DetId {
00015 public:
00017   CaloTowerDetId();
00019   explicit CaloTowerDetId(uint32_t rawid);
00021   CaloTowerDetId(int tower_ieta, int tower_iphi);
00023   CaloTowerDetId(const DetId& id);
00025   CaloTowerDetId& operator=(const DetId& id);
00026 
00028   int zside() const { return (id_&0x2000)?(1):(-1); }
00030   int ietaAbs() const { return (id_>>7)&0x3f; }
00032   int ieta() const { return zside()*ietaAbs(); }
00034   int iphi() const;
00035 
00036   static const int SubdetId = 1;
00037 
00038   static bool validDetId( int ie , int ip ) ;
00039 
00040   uint32_t denseIndex() const ;
00041 
00042   static CaloTowerDetId detIdFromDenseIndex( uint32_t din ) ;
00043 
00044   static bool  validDenseIndex(     uint32_t din ) { return ( din < kSizeForDenseIndexing ) ; }
00045 
00046       enum { kMaxIEta = 41 ,
00047              kMaxIPhi = 72 ,
00048              kBarNPhi = kMaxIPhi ,
00049              kEndNPhi = kMaxIPhi/2 ,
00050              kForNPhi = kMaxIPhi/4 ,
00051              kBarIEta = 20 ,
00052              kEndIEta = 39 ,
00053              kForIEta = kMaxIEta ,
00054              kBarNEta = kBarIEta ,
00055              kEndNEta = kEndIEta - kBarNEta ,
00056              kForNEta = kForIEta - kEndIEta ,
00057              kBarNTot = kBarNPhi*kBarNEta   ,
00058              kEndNTot = kEndNPhi*kEndNEta   ,
00059              kForNTot = kForNPhi*kForNEta   ,
00060              kAllNTot = kBarNTot + kEndNTot + kForNTot ,
00061              kNIndex  = 2*kAllNTot } ;
00062 
00063       enum { kSizeForDenseIndexing = kNIndex } ;
00064 
00065 };
00066 
00067 std::ostream& operator<<(std::ostream&, const CaloTowerDetId& id);
00068 
00069 #endif