CMS 3D CMS Logo

Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions

HcalCastorDetId Class Reference

#include <HcalCastorDetId.h>

Inheritance diagram for HcalCastorDetId:
DetId

List of all members.

Public Types

enum  { kNumberModulesPerEnd = 14, kNumberSectorsPerEnd = 16, kNumberCellsPerEnd = kNumberModulesPerEnd*kNumberSectorsPerEnd, kSizeForDenseIndexing = kNumberCellsPerEnd }
enum  Section { Unknown = 0, EM = 1, HAD = 2 }

Public Member Functions

uint32_t denseIndex () const
 HcalCastorDetId (const DetId &id)
 HcalCastorDetId ()
 HcalCastorDetId (bool true_for_positive_eta, int sector, int module)
 HcalCastorDetId (uint32_t rawid)
 HcalCastorDetId (Section section, bool true_for_positive_eta, int sector, int module)
int module () const
 get the module (1-2 for EM, 1-12 for HAD)
HcalCastorDetIdoperator= (const DetId &id)
Section section () const
 get the section
int sector () const
 get the sector (1-16)
int zside () const
 get the z-side of the cell (1/-1)

Static Public Member Functions

static HcalCastorDetId detIdFromDenseIndex (uint32_t di)
static bool validDenseIndex (uint32_t din)
static bool validDetId (Section iSection, bool posEta, int iSector, int iMod)

Static Public Attributes

static const int SubdetectorId = 3

Private Member Functions

void buildMe (Section section, bool true_for_positive_eta, int sector, int module)

Detailed Description

Contents of the HcalCastorDetId : [9] Z position (true for positive) [8:7] Section (EM/HAD) [6:4] sector (depth) [3:0] module

NEW: [8] z position [7:4] sector [3:0] module

Author:
P. Katsas, T. McCauley

Definition at line 23 of file HcalCastorDetId.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
kNumberModulesPerEnd 
kNumberSectorsPerEnd 
kNumberCellsPerEnd 
kSizeForDenseIndexing 

Definition at line 74 of file HcalCastorDetId.h.

Enumerator:
Unknown 
EM 
HAD 

Definition at line 27 of file HcalCastorDetId.h.

{ Unknown=0, EM=1, HAD=2 };

Constructor & Destructor Documentation

HcalCastorDetId::HcalCastorDetId ( )

Create a null cellid

Definition at line 5 of file HcalCastorDetId.cc.

Referenced by detIdFromDenseIndex().

: DetId() {}
HcalCastorDetId::HcalCastorDetId ( uint32_t  rawid)

Create cellid from raw id (0=invalid tower id)

Definition at line 7 of file HcalCastorDetId.cc.

: DetId(rawid) {}
HcalCastorDetId::HcalCastorDetId ( Section  section,
bool  true_for_positive_eta,
int  sector,
int  module 
)

Constructor from section, z-side, sector and module

Definition at line 19 of file HcalCastorDetId.cc.

References buildMe().

   : DetId(DetId::Calo, SubdetectorId) 
{
   buildMe( section, true_for_positive_eta, sector, module ) ;
}
HcalCastorDetId::HcalCastorDetId ( bool  true_for_positive_eta,
int  sector,
int  module 
)

Definition at line 29 of file HcalCastorDetId.cc.

References buildMe(), and Unknown.

   : DetId( DetId::Calo, SubdetectorId ) 
{
   buildMe( Section(Unknown), true_for_positive_eta, sector, module ) ;
}
HcalCastorDetId::HcalCastorDetId ( const DetId id)

Constructor from a generic cell id

Definition at line 37 of file HcalCastorDetId.cc.

References DetId::Calo, DetId::det(), Exception, DetId::id_, DetId::null(), DetId::rawId(), SubdetectorId, and DetId::subdetId().

{
    if( !gen.null() &&
        ( gen.det()      != DetId::Calo   ||
          gen.subdetId() != SubdetectorId    ) ) 
    {
       throw cms::Exception("Invalid DetId") << "Cannot initialize CASTORDetId from " << std::hex << gen.rawId() << std::dec; 
    }  
    id_= gen.rawId();
}

Member Function Documentation

void HcalCastorDetId::buildMe ( Section  section,
bool  true_for_positive_eta,
int  sector,
int  module 
) [private]

Definition at line 10 of file HcalCastorDetId.cc.

References DetId::id_, and module().

Referenced by HcalCastorDetId().

{
    sector -= 1; // we count sector from 1-16 instead of 0-15
    id_ |= ( true_for_positive_eta << 8 ) | ( sector << 4 ) | module;
}
uint32_t HcalCastorDetId::denseIndex ( ) const

Definition at line 95 of file HcalCastorDetId.cc.

References kNumberCellsPerEnd, kNumberSectorsPerEnd, module(), sector(), and zside().

{
   return ( kNumberCellsPerEnd*( zside() + 1 )/2 +
            kNumberSectorsPerEnd*( module() - 1 ) + sector() - 1 ) ;
}
HcalCastorDetId HcalCastorDetId::detIdFromDenseIndex ( uint32_t  di) [static]
int HcalCastorDetId::module ( ) const [inline]
HcalCastorDetId & HcalCastorDetId::operator= ( const DetId id)

Assignment from a generic cell id

Definition at line 49 of file HcalCastorDetId.cc.

References DetId::Calo, DetId::det(), Exception, DetId::id_, DetId::null(), DetId::rawId(), SubdetectorId, and DetId::subdetId().

{
   if( !gen.null() &&
       ( gen.det()      != DetId::Calo    ||
         gen.subdetId() != SubdetectorId    ) ) 
    {
       throw cms::Exception("Invalid DetId") << "Cannot assign Castor DetId from " << std::hex << gen.rawId() << std::dec; 
    }
  
   id_ = gen.rawId();
    
   return *this;
}
HcalCastorDetId::Section HcalCastorDetId::section ( ) const

get the section

Definition at line 71 of file HcalCastorDetId.cc.

References EM, HAD, text2workspace::mod, module(), and Unknown.

Referenced by CastorTopology::incModule(), CastorTopology::incSector(), CastorText2DetIdConverter::init(), CastorHardcodeGeometryLoader::makeCell(), and CaloGenericDetId::validDetId().

{
   const int mod = module();

   Section sect ;
   if ( mod <= 2 )
   {
      sect = HcalCastorDetId::EM ; 
   }
   else
   {
      if( mod > 2 && mod <= 14 )
      {
         sect = HcalCastorDetId::HAD ;
      }
      else
      {
         sect = HcalCastorDetId::Unknown;
      }
   }
   return sect ;
}
int HcalCastorDetId::sector ( ) const [inline]
static bool HcalCastorDetId::validDenseIndex ( uint32_t  din) [inline, static]

Definition at line 86 of file HcalCastorDetId.h.

References kSizeForDenseIndexing.

      { return ( din < kSizeForDenseIndexing ) ; }
bool HcalCastorDetId::validDetId ( Section  iSection,
bool  posEta,
int  iSector,
int  iMod 
) [static]

Definition at line 102 of file HcalCastorDetId.cc.

References kNumberModulesPerEnd, and kNumberSectorsPerEnd.

{
   return ( 0                   <   iSector &&
            kNumberSectorsPerEnd >= iSector && 
            0                   <   iModule &&
            kNumberModulesPerEnd >= iModule    ) ;
}
int HcalCastorDetId::zside ( ) const [inline]

Member Data Documentation

const int HcalCastorDetId::SubdetectorId = 3 [static]