File indexing completed on 2025-08-05 08:17:43
0001
0002
0003 #ifndef G4DETECTORS_PHG4CELLDEFS_H
0004 #define G4DETECTORS_PHG4CELLDEFS_H
0005
0006 #include <cstdint>
0007
0008 namespace PHG4CellDefs
0009 {
0010
0011
0012
0013 typedef uint64_t keytype;
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 static unsigned int bitshift_layer __attribute__((unused)) = 64 - 16;
0028 static unsigned int bitshift_binning __attribute__((unused)) = bitshift_layer - 16;
0029
0030 static unsigned int bitshift_upperkey __attribute__((unused)) = 16;
0031 static unsigned int bitshift_row __attribute__((unused)) = 16;
0032 static unsigned int bitshift_phi __attribute__((unused)) = 16;
0033
0034 enum CellBinning
0035 {
0036 undefined = 0,
0037 sizebinning = 1,
0038 etaphibinning = 2,
0039 etaslatbinning = 3,
0040 spacalbinning = 4,
0041 scintillatorslatbinning = 5,
0042 etaxsizebinning = 6,
0043 mvtxbinning = 7,
0044 tpcbinning = 8
0045 };
0046 bool has_binning(PHG4CellDefs::keytype key, PHG4CellDefs::CellBinning binning);
0047 short get_binning(const PHG4CellDefs::keytype key);
0048 short int get_detid(const PHG4CellDefs::keytype key);
0049
0050 namespace SizeBinning
0051 {
0052 keytype genkey(const unsigned short layer, const unsigned short zbin, const unsigned short iphibin);
0053 unsigned short int get_zbin(const PHG4CellDefs::keytype key);
0054 unsigned short int get_phibin(const PHG4CellDefs::keytype key);
0055 }
0056
0057 namespace EtaPhiBinning
0058 {
0059 keytype genkey(const unsigned short layer, const unsigned short etabin, const unsigned short phibin);
0060 unsigned short int get_etabin(const PHG4CellDefs::keytype key);
0061 unsigned short int get_phibin(const PHG4CellDefs::keytype key);
0062 }
0063
0064 namespace SpacalBinning
0065 {
0066 keytype genkey(const unsigned short etabin, const unsigned short phibin, const unsigned short fiberid);
0067 unsigned short get_etabin(const PHG4CellDefs::keytype key);
0068 unsigned short get_phibin(const PHG4CellDefs::keytype key);
0069 unsigned short get_fiberid(const PHG4CellDefs::keytype key);
0070 }
0071
0072 namespace ScintillatorSlatBinning
0073 {
0074 keytype genkey(const unsigned short layer, const unsigned short irow, const unsigned short icolumn);
0075 unsigned short int get_row(const PHG4CellDefs::keytype key);
0076 unsigned short int get_column(const PHG4CellDefs::keytype key);
0077 }
0078
0079 namespace EtaXsizeBinning
0080 {
0081 keytype genkey(const unsigned short layer, const unsigned short etabin, const unsigned short xbin);
0082 unsigned short int get_etabin(const PHG4CellDefs::keytype key);
0083 unsigned short int get_xsizebin(const PHG4CellDefs::keytype key);
0084 }
0085
0086 namespace MVTXBinning
0087 {
0088 keytype genkey(const unsigned short layer, const unsigned int bit32_index);
0089 unsigned int get_index(const PHG4CellDefs::keytype key);
0090 }
0091
0092 namespace TPCBinning
0093 {
0094 keytype genkey(const unsigned short lyr, const unsigned short mod, const unsigned short pad);
0095 unsigned short get_radbin(const PHG4CellDefs::keytype key);
0096 unsigned short get_phibin(const PHG4CellDefs::keytype key);
0097 }
0098
0099 }
0100
0101 #endif