File indexing completed on 2023-03-17 10:51:21
0001
0002 #ifndef DataFormats_SiStripCommon_SiStripKey_H
0003 #define DataFormats_SiStripCommon_SiStripKey_H
0004
0005 #include "DataFormats/SiStripCommon/interface/ConstantsForGranularity.h"
0006 #include <ostream>
0007 #include <sstream>
0008 #include <string>
0009 #include <cstdint>
0010
0011 class SiStripKey;
0012
0013
0014 std::ostream& operator<<(std::ostream&, const SiStripKey&);
0015
0016
0017
0018
0019
0020
0021
0022
0023 class SiStripKey {
0024 public:
0025
0026
0027
0028 SiStripKey(const uint32_t& key);
0029
0030
0031 SiStripKey(const std::string& directory_path);
0032
0033
0034 SiStripKey(const SiStripKey&);
0035
0036
0037 const SiStripKey& operator=(const SiStripKey&);
0038
0039
0040 SiStripKey();
0041
0042
0043 virtual ~SiStripKey() { ; }
0044
0045
0046
0047
0048 inline const uint32_t& key() const;
0049
0050
0051 inline const std::string& path() const;
0052
0053
0054 inline const sistrip::Granularity& granularity() const;
0055
0056
0057 inline const uint16_t& channel() const;
0058
0059
0060
0061
0062 virtual bool isEqual(const SiStripKey&) const;
0063
0064
0065 virtual bool isConsistent(const SiStripKey&) const;
0066
0067
0068 virtual bool isValid() const;
0069
0070
0071
0072 virtual bool isValid(const sistrip::Granularity&) const;
0073
0074
0075 virtual bool isInvalid() const;
0076
0077
0078
0079 virtual bool isInvalid(const sistrip::Granularity&) const;
0080
0081
0082
0083
0084 virtual void print(std::stringstream& ss) const;
0085
0086
0087 virtual void terse(std::stringstream& ss) const { ; }
0088
0089 protected:
0090
0091
0092 virtual void initFromValue() { ; }
0093 virtual void initFromKey() { ; }
0094 virtual void initFromPath() { ; }
0095 virtual void initGranularity() { ; }
0096
0097 inline void key(const uint32_t&);
0098 inline void path(const std::string&);
0099 inline void granularity(const sistrip::Granularity&);
0100 inline void channel(const uint16_t&);
0101
0102 private:
0103
0104
0105
0106 uint32_t key_;
0107
0108
0109 std::string path_;
0110
0111
0112 sistrip::Granularity granularity_;
0113
0114
0115 uint16_t channel_;
0116 };
0117
0118
0119
0120 const uint32_t& SiStripKey::key() const { return key_; }
0121 const std::string& SiStripKey::path() const { return path_; }
0122 const sistrip::Granularity& SiStripKey::granularity() const { return granularity_; }
0123 const uint16_t& SiStripKey::channel() const { return channel_; }
0124
0125 void SiStripKey::key(const uint32_t& key) { key_ = key; }
0126 void SiStripKey::path(const std::string& path) { path_ = path; }
0127 void SiStripKey::granularity(const sistrip::Granularity& gran) { granularity_ = gran; }
0128 void SiStripKey::channel(const uint16_t& chan) { channel_ = chan; }
0129
0130 #endif