CMS 3D CMS Logo

FedChannelConnection.h

Go to the documentation of this file.
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   // ---------- Constructor ----------
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   // ---------- Utility methods ----------
00054   
00056   inline bool isConnected() const;
00057   
00059   void consistencyCheck() const {;} //@@ TO BE IMPLEMENTED...
00060   
00062   void print( std::stringstream& ) const;
00063   
00065   void terse( std::stringstream& ) const;
00066   
00067   // -------------------- Module and detector information --------------------
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   // -------------------- FED connection information --------------------
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   // -------------------- Control structure information --------------------
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   // -------------------- Front-end ASICs --------------------
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   // ---------- Private member data ----------
00159   
00160   // Control
00161   uint16_t fecCrate_;
00162   uint16_t fecSlot_;
00163   uint16_t fecRing_;
00164   uint16_t ccuAddr_;
00165   uint16_t ccuChan_;
00166 
00167   // I2C addresses
00168   uint16_t apv0_; 
00169   uint16_t apv1_; 
00170 
00171   // Module / Detector
00172   uint32_t dcuId_;
00173   uint32_t detId_;
00174   uint16_t nApvPairs_;
00175 
00176   // FED
00177   uint16_t fedCrate_;
00178   uint16_t fedSlot_;
00179   uint16_t fedId_;
00180   uint16_t fedCh_;
00181   uint16_t length_;
00182 
00183   // Found devices
00184   bool dcu0x00_; 
00185   bool mux0x43_; 
00186   bool pll0x44_; 
00187   bool lld0x60_; 
00188 
00189 };
00190 
00191 // ---------- Inline methods ----------
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 

Generated on Tue Jun 9 17:26:47 2009 for CMSSW by  doxygen 1.5.4