CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/Geometry/CaloGeometry/src/CaloGenericDetId.cc

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 }