File indexing completed on 2024-04-06 11:58:18
0001
0002 #ifndef CalibFormats_SiStripObjects_SiStripFecCabling_H
0003 #define CalibFormats_SiStripObjects_SiStripFecCabling_H
0004
0005 #include "CalibFormats/SiStripObjects/interface/NumberOfDevices.h"
0006 #include "CalibFormats/SiStripObjects/interface/SiStripFecCrate.h"
0007 #include "CondFormats/SiStripObjects/interface/FedChannelConnection.h"
0008 #include "CondFormats/SiStripObjects/interface/SiStripFedCabling.h"
0009 #include <ostream>
0010 #include <sstream>
0011 #include <vector>
0012 #include <cstdint>
0013
0014 class SiStripFecCabling;
0015
0016
0017 std::ostream &operator<<(std::ostream &, const SiStripFecCabling &);
0018
0019
0020
0021
0022
0023
0024 class SiStripFecCabling {
0025 public:
0026
0027
0028
0029 SiStripFecCabling(const SiStripFedCabling &);
0030
0031 SiStripFecCabling() { ; }
0032
0033 ~SiStripFecCabling() { ; }
0034
0035
0036
0037
0038 inline const std::vector<SiStripFecCrate> &crates() const;
0039 inline std::vector<SiStripFecCrate> &crates();
0040
0041 inline const std::vector<SiStripFec> &fecs() const;
0042
0043 void connections(std::vector<FedChannelConnection> &) const;
0044
0045 const SiStripModule &module(const FedChannelConnection &conn) const;
0046 SiStripModule *module(const FedChannelConnection &conn);
0047
0048 const SiStripModule &module(const uint32_t &dcu_id) const;
0049
0050 NumberOfDevices countDevices() const;
0051
0052 void print(std::stringstream &) const;
0053
0054 void terse(std::stringstream &) const;
0055
0056
0057
0058
0059 void buildFecCabling(const SiStripFedCabling &);
0060
0061 void addDevices(const FedChannelConnection &conn);
0062
0063 inline void dcuId(const FedChannelConnection &conn);
0064
0065 inline void detId(const FedChannelConnection &conn);
0066
0067 inline void nApvPairs(const FedChannelConnection &conn);
0068
0069 private:
0070
0071 std::vector<SiStripFecCrate> crates_;
0072 };
0073
0074
0075
0076 const std::vector<SiStripFecCrate> &SiStripFecCabling::crates() const { return crates_; }
0077 std::vector<SiStripFecCrate> &SiStripFecCabling::crates() { return crates_; }
0078
0079
0080 const std::vector<SiStripFec> &SiStripFecCabling::fecs() const {
0081 const static std::vector<SiStripFec> my_fecs;
0082 if (!crates_.empty()) {
0083 return crates_[0].fecs();
0084 } else {
0085 return my_fecs;
0086 }
0087 }
0088
0089 void SiStripFecCabling::dcuId(const FedChannelConnection &conn) {
0090 auto m = module(conn);
0091 if (m) {
0092 m->dcuId(conn.dcuId());
0093 }
0094 }
0095
0096 void SiStripFecCabling::detId(const FedChannelConnection &conn) {
0097 auto m = module(conn);
0098 if (m) {
0099 m->detId(conn.detId());
0100 }
0101 }
0102
0103 void SiStripFecCabling::nApvPairs(const FedChannelConnection &conn) {
0104 auto m = module(conn);
0105 if (m) {
0106 m->nApvPairs(conn.nApvPairs());
0107 }
0108 }
0109
0110 #endif
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122