00001 #ifndef CondFormats_SiStripObjects_FedChannelConnection_H
00002 #define CondFormats_SiStripObjects_FedChannelConnection_H
00003
00004 #include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
00005 #include <boost/cstdint.hpp>
00006 #include <ostream>
00007 #include <sstream>
00008
00009 class FedChannelConnection;
00010
00012 std::ostream& operator<< ( std::ostream&, const FedChannelConnection& );
00013
00021 class FedChannelConnection {
00022
00023 public:
00024
00025
00026
00029 FedChannelConnection( const uint16_t& fec_crate,
00030 const uint16_t& fec_slot,
00031 const uint16_t& fec_ring,
00032 const uint16_t& ccu_addr,
00033 const uint16_t& ccu_chan,
00034 const uint16_t& apv0 = 0,
00035 const uint16_t& apv1 = 0,
00036 const uint32_t& dcu_id = 0,
00037 const uint32_t& det_id = 0,
00038 const uint16_t& pairs = 0,
00039 const uint16_t& fed_id = 0,
00040 const uint16_t& fed_ch = 0,
00041 const uint16_t& length = 0,
00042 const bool& dcu = false,
00043 const bool& pll = false,
00044 const bool& mux = false,
00045 const bool& lld = false );
00046
00048 FedChannelConnection();
00049
00051 ~FedChannelConnection() {;}
00052
00053
00054
00056 inline bool isConnected() const;
00057
00059 void consistencyCheck() const {;}
00060
00062 void print( std::stringstream& ) const;
00063
00065 void terse( std::stringstream& ) const;
00066
00067
00068
00070 inline const uint32_t& dcuId() const;
00071
00073 inline const uint32_t& detId() const;
00074
00076 inline uint16_t nDetStrips() const;
00077
00079 inline const uint16_t& nApvPairs() const;
00080
00082 inline uint16_t nApvs() const;
00083
00084
00085
00088 uint16_t apvPairNumber() const;
00089
00091 uint16_t lldChannel() const;
00092
00094 inline const uint16_t& fedCrate() const;
00095
00097 inline const uint16_t& fedSlot() const;
00098
00100 inline const uint16_t& fedId() const;
00101
00103 inline const uint16_t& fedCh() const;
00104
00106 inline void fedCrate( uint16_t& fed_crate );
00107
00109 inline void fedSlot( uint16_t& fed_slot );
00110
00112 inline void fedId( uint16_t& fed_id );
00113
00115 inline void fedCh( uint16_t& fed_ch );
00116
00117
00118
00120 inline const uint16_t& fecCrate() const;
00121
00123 inline const uint16_t& fecSlot() const;
00124
00126 inline const uint16_t& fecRing() const;
00127
00129 inline const uint16_t& ccuAddr() const;
00130
00132 inline const uint16_t& ccuChan() const;
00133
00134
00135
00139 const uint16_t& i2cAddr( const uint16_t& apv0_or_1 ) const;
00140
00142 inline const bool& dcu() const;
00143
00145 inline const bool& mux() const;
00146
00148 inline const bool& pll() const;
00149
00151 inline const bool& lld() const;
00152
00154 inline const uint16_t& fiberLength() const;
00155
00156 private:
00157
00158
00159
00160
00161 uint16_t fecCrate_;
00162 uint16_t fecSlot_;
00163 uint16_t fecRing_;
00164 uint16_t ccuAddr_;
00165 uint16_t ccuChan_;
00166
00167
00168 uint16_t apv0_;
00169 uint16_t apv1_;
00170
00171
00172 uint32_t dcuId_;
00173 uint32_t detId_;
00174 uint16_t nApvPairs_;
00175
00176
00177 uint16_t fedCrate_;
00178 uint16_t fedSlot_;
00179 uint16_t fedId_;
00180 uint16_t fedCh_;
00181 uint16_t length_;
00182
00183
00184 bool dcu0x00_;
00185 bool mux0x43_;
00186 bool pll0x44_;
00187 bool lld0x60_;
00188
00189 };
00190
00191
00192
00193 bool FedChannelConnection::isConnected() const {
00194 return ( fedId_ != sistrip::invalid_ &&
00195 fedCh_ != sistrip::invalid_ );
00196 }
00197
00198 const uint16_t& FedChannelConnection::fecCrate() const { return fecCrate_; }
00199 const uint16_t& FedChannelConnection::fecSlot() const { return fecSlot_; }
00200 const uint16_t& FedChannelConnection::fecRing() const { return fecRing_; }
00201 const uint16_t& FedChannelConnection::ccuAddr() const { return ccuAddr_; }
00202 const uint16_t& FedChannelConnection::ccuChan() const { return ccuChan_; }
00203
00204 const bool& FedChannelConnection::dcu() const { return dcu0x00_; }
00205 const bool& FedChannelConnection::mux() const { return mux0x43_; }
00206 const bool& FedChannelConnection::pll() const { return pll0x44_; }
00207 const bool& FedChannelConnection::lld() const { return lld0x60_; }
00208
00209 const uint32_t& FedChannelConnection::dcuId() const { return dcuId_; }
00210 const uint32_t& FedChannelConnection::detId() const { return detId_; }
00211 uint16_t FedChannelConnection::nDetStrips() const { return 256*nApvPairs_; }
00212 const uint16_t& FedChannelConnection::nApvPairs() const { return nApvPairs_; }
00213 uint16_t FedChannelConnection::nApvs() const { return 2*nApvPairs(); }
00214
00215 const uint16_t& FedChannelConnection::fedCrate() const { return fedCrate_; }
00216 const uint16_t& FedChannelConnection::fedSlot() const { return fedSlot_; }
00217 const uint16_t& FedChannelConnection::fedId() const { return fedId_; }
00218 const uint16_t& FedChannelConnection::fedCh() const { return fedCh_; }
00219
00220 const uint16_t& FedChannelConnection::fiberLength() const { return length_; }
00221
00222 void FedChannelConnection::fedId( uint16_t& fed_id ) { fedId_ = fed_id; }
00223 void FedChannelConnection::fedCh( uint16_t& fed_ch ) { fedCh_ = fed_ch; }
00224 void FedChannelConnection::fedCrate( uint16_t& fed_crate ) { fedCrate_ = fed_crate; }
00225 void FedChannelConnection::fedSlot( uint16_t& fed_slot ) { fedSlot_ = fed_slot; }
00226
00227 #endif // CondFormats_SiStripObjects_FedChannelConnection_H
00228