File indexing completed on 2024-04-06 12:04:08
0001 #ifndef DataFormats_ForwardDetId_HGCTriggerDetId_H
0002 #define DataFormats_ForwardDetId_HGCTriggerDetId_H 1
0003
0004 #include <iosfwd>
0005 #include "DataFormats/DetId/interface/DetId.h"
0006 #include "DataFormats/ForwardDetId/interface/ForwardSubdetector.h"
0007
0008 class HGCTriggerDetId : public DetId {
0009
0010
0011
0012
0013
0014 const static uint32_t cell_shift = 0;
0015 const static uint32_t cell_mask = 0x7F;
0016 const static uint32_t module_mask = 0x3F;
0017 const static uint32_t module_shift = 7;
0018 const static uint32_t sector_shift = 13;
0019 const static uint32_t sector_mask = 0x3F;
0020 const static uint32_t layer_shift = 19;
0021 const static uint32_t layer_mask = 0x1F;
0022 const static uint32_t zside_shift = 24;
0023 const static uint32_t zside_mask = 0x1;
0024
0025 const inline int getMaskedId(const uint32_t& shift, const uint32_t& mask) const { return (id_ >> shift) & mask; }
0026 inline void setMaskedId(const uint32_t value, const uint32_t& shift, const uint32_t& mask) {
0027 id_ |= ((value & mask) << shift);
0028 }
0029
0030 public:
0031
0032 const static uint32_t UndefinedCell() { return cell_mask; }
0033
0034 enum { Subdet = HGCTrigger };
0035
0036 HGCTriggerDetId();
0037 virtual ~HGCTriggerDetId() {}
0038
0039 HGCTriggerDetId(uint32_t rawid);
0040
0041 HGCTriggerDetId(ForwardSubdetector subdet, int zp, int lay, int sector, int mod, int cell);
0042
0043 HGCTriggerDetId(const DetId& id);
0044
0045 HGCTriggerDetId& operator=(const DetId& id);
0046
0047
0048
0049
0050
0051
0052
0053 ForwardSubdetector subdet() const { return HGCTrigger; }
0054
0055
0056 int cell() const { return getMaskedId(cell_shift, cell_mask); }
0057
0058
0059 int sector() const { return getMaskedId(sector_shift, sector_mask); }
0060
0061
0062 int module() const { return getMaskedId(module_shift, module_mask); }
0063
0064
0065 int layer() const { return getMaskedId(layer_shift, layer_mask); }
0066
0067
0068 int zside() const { return (getMaskedId(zside_shift, zside_mask) ? 1 : -1); }
0069
0070
0071 bool isEE() const { return true; }
0072 bool isForward() const { return true; }
0073
0074 static const HGCTriggerDetId Undefined;
0075 };
0076
0077 std::ostream& operator<<(std::ostream&, const HGCTriggerDetId& id);
0078
0079 #endif