23 throw cms::Exception(
"InvalidDetId") <<
"EcalScDetId: Cannot create object. Indexes out of bounds \n" 24 <<
"x = " << ix <<
" y = " << iy <<
" z = " << iz;
26 const int scBit = 1<<15;
28 id_|=(iy&0x7f)|((ix&0x7f)<<7)|((iz>0)?(1<<14):(0))|scBit;
47 const int xMiddle =
IX_MAX/2;
48 const int yMiddle =
IY_MAX/2;
65 static const char endcapMap[401] = {
70 " XXXXXXXXXXXXXXXXXX " 71 " XXXXXXXXXXXXXXXXXX " 72 " XXXXXXXXXXXXXXXXXX " 73 "XXXXXXXXXXXXXXXXXXXX" 78 "XXXXXXXXXXXXXXXXXXXX" 79 " XXXXXXXXXXXXXXXXXX " 80 " XXXXXXXXXXXXXXXXXX " 81 " XXXXXXXXXXXXXXXXXX " 87 return abs(iZ)==1 && endcapMap[iX-1+(iY-1)*20]!=
' ';
91 return s <<
"(EE iz " << ((
id.zside()>0)?(
"+ "):(
"- ")) <<
" ix " <<
id.ix() <<
" , iy " <<
id.iy() <<
')';
100 for(
int iZ = -1; iZ <= +1; iZ+=2){
static bool validDetId(int ix, int iy, int iz)
EcalScDetId & operator=(const DetId &id)
constexpr bool null() const
is this a null id ?
constexpr uint32_t rawId() const
get the raw id
static EcalScDetId hashedIndex2DetId[kSizeForDenseIndexing]
static std::once_flag initializedFlag
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
Abs< T >::type abs(const T &t)
static const int nEndcaps
std::ostream & operator<<(std::ostream &s, const EcalScDetId &id)
static void checkHashedIndexMap()
constexpr Detector det() const
get the detector field from this detid
static short xyz2HashedIndex[IX_MAX][IY_MAX][nEndcaps]