CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
HcalTestNumbering.cc
Go to the documentation of this file.
1 // File: HcalTestNumbering.cc
3 // Description: Numbering scheme packing for test beam hadron calorimeter
6 
7 uint32_t HcalTestNumbering::packHcalIndex(int det, int z, int depth, int eta, int phi, int lay) {
8  uint32_t idx = (det & 15) << 28; //bits 28-31
9  idx += ((depth - 1) & 3) << 26; //bits 26-27
10  idx += ((lay - 1) & 31) << 21; //bits 21-25
11  idx += (z & 1) << 20; //bits 20
12  idx += (eta & 1023) << 10; //bits 10-19
13  idx += (phi & 1023); //bits 0-9
14 
15  return idx;
16 }
17 
19  const uint32_t& idx, int& det, int& z, int& depth, int& eta, int& phi, int& lay) {
20  det = (idx >> 28) & 15;
21  depth = (idx >> 26) & 3;
22  depth += 1;
23  lay = (idx >> 21) & 31;
24  lay += 1;
25  z = (idx >> 20) & 1;
26  eta = (idx >> 10) & 1023;
27  phi = (idx & 1023);
28 }
float float float z
static uint32_t packHcalIndex(int det, int z, int depth, int eta, int phi, int lay)
static void unpackHcalIndex(const uint32_t &idx, int &det, int &z, int &depth, int &eta, int &phi, int &lay)