File indexing completed on 2024-04-06 12:05:13
0001
0002 #ifndef DataFormats_SiStripCommon_SiStripDetKey_h
0003 #define DataFormats_SiStripCommon_SiStripDetKey_h
0004
0005 #include "DataFormats/SiStripCommon/interface/ConstantsForGranularity.h"
0006 #include "DataFormats/SiStripCommon/interface/SiStripKey.h"
0007 #include "DataFormats/SiStripDetId/interface/SiStripDetId.h"
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 class SiStripDetKey : public SiStripKey {
0029 public:
0030
0031
0032
0033 SiStripDetKey(const uint16_t& partition);
0034
0035
0036 SiStripDetKey(const DetId& det_id, const uint16_t& apv_pair_number = 0, const uint16_t& apv_within_pair = 0);
0037
0038
0039 SiStripDetKey(const SiStripDetId& det_id);
0040
0041
0042 SiStripDetKey(const uint32_t& det_key);
0043
0044
0045 SiStripDetKey(const std::string& directory_path);
0046
0047
0048 SiStripDetKey(const SiStripDetKey&);
0049
0050
0051 SiStripDetKey(const SiStripKey&);
0052
0053
0054 SiStripDetKey(const SiStripKey&, const sistrip::Granularity&);
0055
0056
0057 SiStripDetKey();
0058
0059
0060
0061
0062 inline const uint16_t& partition() const;
0063
0064
0065 inline const uint16_t& apvPairNumber() const;
0066
0067
0068 inline const uint16_t& apvWithinPair() const;
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079 bool isEqual(const SiStripKey&) const override;
0080
0081
0082 bool isConsistent(const SiStripKey&) const override;
0083
0084
0085 bool isValid() const override;
0086
0087
0088
0089 bool isValid(const sistrip::Granularity&) const override;
0090
0091
0092 bool isInvalid() const override;
0093
0094
0095
0096 bool isInvalid(const sistrip::Granularity&) const override;
0097
0098
0099
0100
0101 void print(std::stringstream& ss) const override;
0102
0103
0104 void terse(std::stringstream& ss) const override;
0105
0106 private:
0107
0108
0109 void initFromValue() override;
0110 void initFromKey() override;
0111 void initFromPath() override;
0112 void initGranularity() override;
0113
0114
0115
0116
0117 uint16_t partition_;
0118
0119
0120 uint16_t apvPairNumber_;
0121
0122
0123 uint16_t apvWithinPair_;
0124
0125
0126 static const uint16_t partitionOffset_ = 29;
0127
0128
0129 static const uint16_t partitionMask_ = 0x07;
0130 };
0131
0132
0133
0134 const uint16_t& SiStripDetKey::partition() const { return partition_; }
0135 const uint16_t& SiStripDetKey::apvPairNumber() const { return apvPairNumber_; }
0136 const uint16_t& SiStripDetKey::apvWithinPair() const { return apvWithinPair_; }
0137
0138
0139 std::ostream& operator<<(std::ostream&, const SiStripDetKey&);
0140
0141 inline bool operator<(const SiStripDetKey& a, const SiStripDetKey& b) { return (a.key() < b.key()); }
0142
0143 #endif