Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:18:12

0001 #include "TrkrDefs.h"
0002 
0003 #include <bitset>
0004 
0005 namespace
0006 {
0007   // hitsetkey layout:
0008   //  common upper 16 bits
0009   //   24 - 32  tracker id
0010   //   16 - 24  layer
0011   static constexpr unsigned int kBitShiftTrkrId = 24;  // 32 - 8
0012   static constexpr unsigned int kBitShiftLayer = 16;   // bitshift_trackerid - 8
0013 
0014   // cluskey layour
0015   //  hitsetkey upper 32 bits
0016   //  cluster id lower 32 bits
0017   static constexpr unsigned int kBitShiftClusId = 32;
0018 }
0019 
0020 void TrkrDefs::printBits(const TrkrDefs::hitsetkey key, std::ostream& os)
0021 {
0022   os << "key: " << std::bitset<32>(key) << std::endl;
0023 }
0024 
0025 void TrkrDefs::printBits(const TrkrDefs::cluskey key, std::ostream& os)
0026 {
0027   os << "key: " << std::bitset<64>(key) << std::endl;
0028 }
0029 
0030 uint8_t
0031 TrkrDefs::getTrkrId(const TrkrDefs::hitsetkey key)
0032 {
0033   TrkrDefs::hitsetkey tmp = (key >> kBitShiftTrkrId);
0034   return tmp;
0035 }
0036 
0037 uint8_t
0038 TrkrDefs::getTrkrId(const TrkrDefs::cluskey key)
0039 {
0040   TrkrDefs::hitsetkey tmp = (key >> kBitShiftClusId);
0041   return getTrkrId(tmp);
0042 }
0043 
0044 uint8_t
0045 TrkrDefs::getLayer(const TrkrDefs::hitsetkey key)
0046 {
0047   TrkrDefs::hitsetkey tmp = (key >> kBitShiftLayer);
0048   return tmp;
0049 }
0050 
0051 uint8_t
0052 TrkrDefs::getLayer(const TrkrDefs::cluskey key)
0053 {
0054   TrkrDefs::hitsetkey tmp = (key >> kBitShiftClusId);
0055   return getLayer(tmp);
0056 }
0057 
0058 uint32_t
0059 TrkrDefs::getClusIndex(const TrkrDefs::cluskey key)
0060 {
0061   return key;
0062 }
0063 
0064 uint32_t
0065 TrkrDefs::getHitSetKeyFromClusKey(const TrkrDefs::cluskey key)
0066 {
0067   return (key >> kBitShiftClusId);
0068 }
0069 
0070 TrkrDefs::hitsetkey
0071 TrkrDefs::getHitSetKeyLo(const TrkrDefs::TrkrId trkrId)
0072 {
0073   return genHitSetKey(trkrId, 0);
0074 }
0075 
0076 TrkrDefs::hitsetkey
0077 TrkrDefs::getHitSetKeyHi(const TrkrDefs::TrkrId trkrId)
0078 {
0079   return genHitSetKey(static_cast<TrkrDefs::TrkrId>(trkrId + 1), 0) - 1;
0080 }
0081 
0082 TrkrDefs::hitsetkey
0083 TrkrDefs::getHitSetKeyLo(const TrkrDefs::TrkrId trkrId, const uint8_t lyr)
0084 {
0085   return genHitSetKey(trkrId, lyr);
0086 }
0087 
0088 TrkrDefs::hitsetkey
0089 TrkrDefs::getHitSetKeyHi(const TrkrDefs::TrkrId trkrId, const uint8_t lyr)
0090 {
0091   return genHitSetKey(trkrId, lyr + 1) - 1;
0092 }
0093 
0094 TrkrDefs::cluskey
0095 TrkrDefs::getClusKeyLo(const TrkrDefs::TrkrId trkrId)
0096 {
0097   const TrkrDefs::cluskey tmp = genHitSetKey(trkrId, 0);
0098   return (tmp << kBitShiftClusId);
0099 }
0100 
0101 TrkrDefs::cluskey
0102 TrkrDefs::getClusKeyHi(const TrkrDefs::TrkrId trkrId)
0103 {
0104   const TrkrDefs::cluskey tmp = genHitSetKey(static_cast<TrkrDefs::TrkrId>(trkrId + 1), 0);
0105   return (tmp << kBitShiftClusId) - 1;
0106 }
0107 
0108 TrkrDefs::cluskey
0109 TrkrDefs::getClusKeyLo(const TrkrDefs::TrkrId trkrId, const uint8_t lyr)
0110 {
0111   const TrkrDefs::cluskey tmp = genHitSetKey(trkrId, lyr);
0112   return (tmp << kBitShiftClusId);
0113 }
0114 
0115 TrkrDefs::cluskey
0116 TrkrDefs::getClusKeyHi(const TrkrDefs::TrkrId trkrId, const uint8_t lyr)
0117 {
0118   const TrkrDefs::cluskey tmp = genHitSetKey(trkrId, lyr + 1);
0119   return (tmp << kBitShiftClusId) - 1;
0120 }
0121 
0122 TrkrDefs::hitsetkey
0123 TrkrDefs::genHitSetKey(const TrkrDefs::TrkrId trkrId, const uint8_t lyr)
0124 {
0125   TrkrDefs::hitsetkey tmp = trkrId;
0126   TrkrDefs::hitsetkey key = tmp << kBitShiftTrkrId;  // detector id
0127   tmp = lyr;
0128   key |= (tmp << kBitShiftLayer);  // layer
0129   return key;
0130 }
0131 
0132 TrkrDefs::cluskey
0133 TrkrDefs::genClusKey(const TrkrDefs::hitsetkey hskey, const uint32_t clusid)
0134 {
0135   const TrkrDefs::cluskey tmp = hskey;
0136   TrkrDefs::cluskey key = (tmp << kBitShiftClusId);
0137   key |= clusid;
0138   return key;
0139 }
0140 
0141 uint8_t TrkrDefs::getPhiElement(TrkrDefs::hitsetkey key)
0142 {
0143   const TrkrDefs::hitsetkey tmp = (key >> TrkrDefs::kBitShiftPhiElement);
0144   return tmp;
0145 }
0146 
0147 uint8_t TrkrDefs::getZElement(TrkrDefs::hitsetkey key)
0148 {
0149   const TrkrDefs::hitsetkey tmp = (key >> TrkrDefs::kBitShiftZElement);
0150   return tmp;
0151 }
0152 
0153 uint8_t TrkrDefs::getPhiElement(TrkrDefs::cluskey key)
0154 {
0155   const TrkrDefs::hitsetkey tmp = (key >> kBitShiftClusId);
0156   return getPhiElement(tmp);
0157 }
0158 
0159 uint8_t TrkrDefs::getZElement(TrkrDefs::cluskey key)  // side
0160 {
0161   const TrkrDefs::hitsetkey tmp = (key >> kBitShiftClusId);
0162   return getZElement(tmp);
0163 }