Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:20:34

0001 /**
0002  * @file trackbase/TpcDefs.cc
0003  * @author D. McGlinchey
0004  * @date June 2018
0005  * @brief Implementation file for TpcDefs.h
0006  */
0007 #include "TpcDefs.h"
0008 
0009 #include "TrkrDefs.h"  // for hitsetkey, cluskey, hitkey, kBitShif...
0010 
0011 namespace
0012 {
0013 
0014   // hitsetkey layout:
0015   //  Tpc specific lower 16 bits
0016   //   24 - 32  tracker id
0017   //   16 - 24  layer
0018   //   8  - 16  sector id
0019   //   0  -  8  side
0020   static constexpr unsigned int kBitShiftSectorId = 8;
0021   static constexpr unsigned int kBitShiftSide = 0;
0022 
0023   // bit shift for hitkey
0024   //  16 - 32 pad id
0025   //  0  - 16 time bin
0026   static constexpr unsigned int kBitShiftPad = 16;
0027   static constexpr unsigned int kBitShiftTBin = 0;
0028 }
0029 
0030 uint8_t
0031 TpcDefs::getSectorId(TrkrDefs::hitsetkey key)
0032 {
0033   TrkrDefs::hitsetkey tmp = (key >> kBitShiftSectorId);
0034   return tmp;
0035 }
0036 
0037 uint8_t
0038 TpcDefs::getSectorId(TrkrDefs::cluskey key)
0039 {
0040   const TrkrDefs::hitsetkey tmp = TrkrDefs::getHitSetKeyFromClusKey(key);
0041   return getSectorId(tmp);
0042 }
0043 
0044 uint8_t
0045 TpcDefs::getSide(TrkrDefs::hitsetkey key)
0046 {
0047   TrkrDefs::hitsetkey tmp = (key >> kBitShiftSide);
0048   return tmp;
0049 }
0050 
0051 uint8_t
0052 TpcDefs::getSide(TrkrDefs::cluskey key)
0053 {
0054   const TrkrDefs::hitsetkey tmp = TrkrDefs::getHitSetKeyFromClusKey(key);
0055   return getSide(tmp);
0056 }
0057 
0058 uint16_t
0059 TpcDefs::getPad(TrkrDefs::hitkey key)
0060 {
0061   TrkrDefs::hitkey tmp = (key >> kBitShiftPad);
0062   return tmp;
0063 }
0064 
0065 uint16_t
0066 TpcDefs::getTBin(TrkrDefs::hitkey key)
0067 {
0068   TrkrDefs::hitkey tmp = (key >> kBitShiftTBin);
0069   return tmp;
0070 }
0071 
0072 TrkrDefs::hitkey
0073 TpcDefs::genHitKey(const uint16_t pad, const uint16_t tbin)
0074 {
0075   TrkrDefs::hitkey key = (pad << kBitShiftPad);
0076   TrkrDefs::hitkey tmp = (tbin << kBitShiftTBin);
0077   key |= tmp;
0078   return key;
0079 }
0080 
0081 TrkrDefs::hitsetkey
0082 TpcDefs::genHitSetKey(const uint8_t lyr, const uint8_t sector, const uint8_t side)
0083 {
0084   TrkrDefs::hitsetkey key = TrkrDefs::genHitSetKey(TrkrDefs::TrkrId::tpcId, lyr);
0085   TrkrDefs::hitsetkey tmp = sector;
0086   key |= (tmp << kBitShiftSectorId);
0087   tmp = side;
0088   key |= (tmp << kBitShiftSide);
0089   return key;
0090 }
0091 
0092 TrkrDefs::cluskey
0093 TpcDefs::genClusKey(const uint8_t lyr, const uint8_t sector, const uint8_t side, const uint32_t clusid)
0094 {
0095   const auto key = genHitSetKey(lyr, sector, side);
0096   return TrkrDefs::genClusKey(key, clusid);
0097 }