Go to the documentation of this file.00001 #include "Geometry/CaloGeometry/interface/CaloGenericDetId.h"
00002 #include <iostream>
00003
00004 CaloGenericDetId::CaloGenericDetId( DetId::Detector iDet ,
00005 int iSub ,
00006 uint32_t iDin ) : DetId( iDet, iSub )
00007 {
00008 id_ = ( isEB() ? EBDetId::detIdFromDenseIndex( iDin ).rawId() :
00009 ( isEE() ? EEDetId::detIdFromDenseIndex( iDin ).rawId() :
00010 ( isES() ? ESDetId::detIdFromDenseIndex( iDin ).rawId() :
00011 ( isHcal() ? HcalDetId::detIdFromDenseIndex( iDin ).rawId() :
00012 ( isZDC() ? HcalZDCDetId::detIdFromDenseIndex( iDin ).rawId() :
00013 ( isCastor() ? HcalCastorDetId::detIdFromDenseIndex( iDin ).rawId() :
00014 ( isCaloTower() ? CaloTowerDetId::detIdFromDenseIndex( iDin ).rawId() : 0 ) ) ) ) ) ) ) ;
00015 }
00016
00017 uint32_t
00018 CaloGenericDetId::denseIndex() const
00019 {
00020 return ( isEB() ? EBDetId( rawId() ).denseIndex() :
00021 ( isEE() ? EEDetId( rawId() ).denseIndex() :
00022 ( isES() ? ESDetId( rawId() ).denseIndex() :
00023 ( isHcal() ? HcalDetId( rawId() ).denseIndex() :
00024 ( isZDC() ? HcalZDCDetId( rawId() ).denseIndex() :
00025 ( isCastor() ? HcalCastorDetId( rawId() ).denseIndex() :
00026 ( isCaloTower() ? CaloTowerDetId( rawId() ).denseIndex() : ~0 ) ) ) ) ) ) ) ;
00027 }
00028
00029 uint32_t
00030 CaloGenericDetId::sizeForDenseIndexing() const
00031 {
00032 return ( isEB() ? EBDetId::kSizeForDenseIndexing :
00033 ( isEE() ? EEDetId::kSizeForDenseIndexing :
00034 ( isES() ? ESDetId::kSizeForDenseIndexing :
00035 ( isHcal() ? HcalDetId::kSizeForDenseIndexing :
00036 ( isZDC() ? HcalZDCDetId::kSizeForDenseIndexing :
00037 ( isCastor() ? HcalCastorDetId::kSizeForDenseIndexing :
00038 ( isCaloTower() ? CaloTowerDetId::kSizeForDenseIndexing : 0 ) ) ) ) ) ) ) ;
00039 }
00040
00041 bool
00042 CaloGenericDetId::validDetId() const
00043 {
00044 bool returnValue ( false ) ;
00045 if( isEB() )
00046 {
00047 const EBDetId ebid ( rawId() ) ;
00048 returnValue = EBDetId::validDetId( ebid.ieta(),
00049 ebid.iphi() ) ;
00050 }
00051 else
00052 {
00053 if( isEE() )
00054 {
00055 const EEDetId eeid ( rawId() ) ;
00056 returnValue = EEDetId::validDetId( eeid.ix(),
00057 eeid.iy(),
00058 eeid.zside() ) ;
00059 }
00060 else
00061 {
00062 if( isES() )
00063 {
00064 const ESDetId esid ( rawId() ) ;
00065 returnValue = ESDetId::validDetId( esid.strip(),
00066 esid.six(),
00067 esid.siy(),
00068 esid.plane(),
00069 esid.zside() ) ;
00070 }
00071 else
00072 {
00073 if( isHcal() )
00074 {
00075 const HcalDetId hcid ( rawId() ) ;
00076 returnValue = HcalDetId::validDetId( hcid.subdet(),
00077 hcid.ieta() ,
00078 hcid.iphi() ,
00079 hcid.depth() ) ;
00080 }
00081 else
00082 {
00083 if( isZDC() )
00084 {
00085 const HcalZDCDetId zdid ( rawId() ) ;
00086 returnValue = HcalZDCDetId::validDetId( zdid.section(),
00087 zdid.channel() ) ;
00088 }
00089 else
00090 {
00091 if( isCastor() )
00092 {
00093 const HcalCastorDetId zdid ( rawId() ) ;
00094 returnValue = HcalCastorDetId::validDetId( zdid.section(),
00095 zdid.zside()>0,
00096 zdid.sector(),
00097 zdid.module() ) ;
00098 }
00099 else
00100 {
00101 if( isCaloTower() )
00102 {
00103 const CaloTowerDetId ctid ( rawId() ) ;
00104 returnValue = CaloTowerDetId::validDetId( ctid.ieta(),
00105 ctid.iphi() ) ;
00106 }
00107 }
00108 }
00109 }
00110 }
00111 }
00112 }
00113 return returnValue ;
00114 }
00115
00116 std::ostream& operator<<(std::ostream& s, const CaloGenericDetId& id)
00117 {
00118 return ( id.isEB() ? s<<EBDetId( id ) :
00119 ( id.isEE() ? s<<EEDetId( id ) :
00120 ( id.isES() ? s<<ESDetId( id ) :
00121 ( id.isCaloTower() ? s<<CaloTowerDetId( id ) :
00122 ( id.isHcal() ? s<<HcalDetId( id ) :
00123 ( id.isZDC() ? s<<HcalZDCDetId( id ) :
00124 s<<"UnknownId="<<std::hex<<id.rawId()<<std::dec ) ) ) ) ) ) ;
00125 }