File indexing completed on 2024-04-06 12:05:11
0001 #ifndef DataFormats_SiStripDetId_PXFDetId_H
0002 #define DataFormats_SiStripDetId_PXFDetId_H
0003
0004 #include <ostream>
0005 #include "DataFormats/DetId/interface/DetId.h"
0006 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
0007
0008
0009
0010
0011 class PXFDetId;
0012
0013 std::ostream& operator<<(std::ostream& os, const PXFDetId& id);
0014
0015 class PXFDetId : public DetId {
0016 public:
0017
0018 PXFDetId();
0019
0020 PXFDetId(uint32_t rawid);
0021
0022 PXFDetId(const DetId& id);
0023
0024 PXFDetId(uint32_t side, uint32_t disk, uint32_t blade, uint32_t panel, uint32_t module)
0025 : DetId(DetId::Tracker, PixelSubdetector::PixelEndcap) {
0026 id_ |= (side & sideMask_) << sideStartBit_ | (disk & diskMask_) << diskStartBit_ |
0027 (blade & bladeMask_) << bladeStartBit_ | (panel & panelMask_) << panelStartBit_ |
0028 (module & moduleMask_) << moduleStartBit_;
0029 }
0030
0031
0032 unsigned int side() const { return int((id_ >> sideStartBit_) & sideMask_); }
0033
0034
0035 unsigned int disk() const { return int((id_ >> diskStartBit_) & diskMask_); }
0036
0037
0038 unsigned int blade() const { return ((id_ >> bladeStartBit_) & bladeMask_); }
0039
0040
0041 unsigned int panel() const { return ((id_ >> panelStartBit_) & panelMask_); }
0042
0043
0044 unsigned int module() const { return ((id_ >> moduleStartBit_) & moduleMask_); }
0045
0046 private:
0047
0048 static const unsigned int sideStartBit_ = 23;
0049 static const unsigned int diskStartBit_ = 16;
0050 static const unsigned int bladeStartBit_ = 10;
0051 static const unsigned int panelStartBit_ = 8;
0052 static const unsigned int moduleStartBit_ = 2;
0053
0054
0055 static const unsigned int sideMask_ = 0x3;
0056 static const unsigned int diskMask_ = 0xF;
0057 static const unsigned int bladeMask_ = 0x3F;
0058 static const unsigned int panelMask_ = 0x3;
0059 static const unsigned int moduleMask_ = 0x3F;
0060 };
0061
0062 #endif