File indexing completed on 2024-04-06 12:04:08
0001 #ifndef DataFormats_ForwardDetId_HGCHEDetId_H
0002 #define DataFormats_ForwardDetId_HGCHEDetId_H 1
0003
0004 #include <iosfwd>
0005 #include "DataFormats/DetId/interface/DetId.h"
0006 #include "DataFormats/ForwardDetId/interface/ForwardSubdetector.h"
0007
0008 class HGCHEDetId : public DetId {
0009 public:
0010 static const int kHGCHECellOffset = 0;
0011 static const int kHGCHECellMask = 0xFFF;
0012 static const int kHGCHESectorOffset = 12;
0013 static const int kHGCHESectorMask = 0x3F;
0014 static const int kHGCHESubSectorOffset = 18;
0015 static const int kHGCHESubSectorMask = 0x1;
0016 static const int kHGCHELayerOffset = 19;
0017 static const int kHGCHELayerMask = 0x1F;
0018 static const int kHGCHEZsideOffset = 24;
0019 static const int kHGCHEZsideMask = 0x1;
0020
0021 HGCHEDetId();
0022
0023 HGCHEDetId(uint32_t rawid);
0024
0025 HGCHEDetId(ForwardSubdetector subdet, int zp, int lay, int mod, int subsec, int cell);
0026
0027 HGCHEDetId(const DetId& id);
0028
0029 HGCHEDetId& operator=(const DetId& id);
0030
0031
0032
0033
0034 HGCHEDetId geometryCell() const;
0035
0036
0037 ForwardSubdetector subdet() const { return (ForwardSubdetector)(subdetId()); }
0038
0039
0040 int cell() const { return id_ & kHGCHECellMask; }
0041
0042
0043 int sector() const { return (id_ >> kHGCHESectorOffset) & kHGCHESectorMask; }
0044
0045
0046 int subsector() const { return ((id_ >> kHGCHESubSectorOffset) & kHGCHESubSectorMask ? 1 : -1); }
0047
0048
0049 int layer() const { return (id_ >> kHGCHELayerOffset) & kHGCHELayerMask; }
0050
0051
0052 int zside() const { return ((id_ >> kHGCHEZsideOffset) & kHGCHEZsideMask ? 1 : -1); }
0053
0054
0055 bool isHE() const { return true; }
0056 bool isForward() const { return true; }
0057
0058 static const HGCHEDetId Undefined;
0059 };
0060
0061 std::ostream& operator<<(std::ostream&, const HGCHEDetId& id);
0062
0063 #endif