19#ifndef BmnNdetAddress_H
20#define BmnNdetAddress_H 1
39 static uint32_t
GetAddress(uint32_t ArmId, uint32_t RowId, uint32_t ColumnId, uint32_t LayerId)
41 assert((uint32_t)
kNDET <= fgkSystemIdLength);
42 assert(ArmId <= fgkArmIdLength);
43 assert(RowId <= fgkRowIdLength);
44 assert(ColumnId <= fgkColumnIdLength);
45 assert(LayerId <= fgkLayerIdLength);
46 return ((((uint32_t)
kNDET) << fgkSystemIdShift) | (ArmId << fgkArmIdShift) | (RowId << fgkRowIdShift)
47 | (ColumnId << fgkColumnIdShift) | (LayerId << fgkLayerIdShift));
57 std::ostringstream oss;
58 oss <<
"Address: " << address <<
", SystemId: " <<
GetSystemId(address) <<
", ArmId: " <<
GetArmId(address)
71 return (address & (fgkSystemIdLength << fgkSystemIdShift)) >> fgkSystemIdShift;
81 return (address & (fgkArmIdLength << fgkArmIdShift)) >> fgkArmIdShift;
91 return (address & (fgkRowIdLength << fgkRowIdShift)) >> fgkRowIdShift;
101 return (address & (fgkColumnIdLength << fgkColumnIdShift)) >> fgkColumnIdShift;
111 return (address & (fgkLayerIdLength << fgkLayerIdShift)) >> fgkLayerIdShift;
116 static const uint32_t fgkSystemIdLength = 31;
117 static const uint32_t fgkArmIdLength = 3;
118 static const uint32_t fgkRowIdLength = 15;
119 static const uint32_t fgkColumnIdLength = 15;
120 static const uint32_t fgkLayerIdLength = 31;
123 static const uint32_t fgkSystemIdShift = 0;
124 static const uint32_t fgkArmIdShift = 5;
125 static const uint32_t fgkRowIdShift = 7;
126 static const uint32_t fgkColumnIdShift = 11;
127 static const uint32_t fgkLayerIdShift = 15;
BmnNdet interface class to the unique address.
static std::string GetInfoString(uint32_t address)
Return a formatted string with all address components.
static uint32_t GetRowId(uint32_t address)
Return Row id from address.
virtual ~BmnNdetAddress()
static uint32_t GetSystemId(uint32_t address)
Return System identifier from address.
static uint32_t GetAddress(uint32_t ArmId, uint32_t RowId, uint32_t ColumnId, uint32_t LayerId)
Return address.
static uint32_t GetColumnId(uint32_t address)
Return Column id from address.
static uint32_t GetArmId(uint32_t address)
Return Arm id from address.
static uint32_t GetLayerId(uint32_t address)
Return Layer id from address.
Defines unique identifiers (enum) for all BM@N detector systems.