CMS 3D CMS Logo

SiStripFedCablingESSource.h

Go to the documentation of this file.
00001 // Last commit: $Id: SiStripFedCablingESSource.h,v 1.8 2007/05/24 15:21:50 bainbrid Exp $
00002 
00003 #ifndef CalibTracker_SiStripConnectivity_SiStripFedCablingESSource_H
00004 #define CalibTracker_SiStripConnectivity_SiStripFedCablingESSource_H
00005 
00006 #include "FWCore/Framework/interface/ESProducer.h"
00007 #include "FWCore/Framework/interface/ESHandle.h"
00008 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
00009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00010 #include "boost/cstdint.hpp"
00011 #include <memory>
00012 
00013 class SiStripFedCabling;
00014 class SiStripFedCablingRcd;
00015 
00021 class SiStripFedCablingESSource : public edm::ESProducer, public edm::EventSetupRecordIntervalFinder {
00022 
00023  public:
00024 
00025   SiStripFedCablingESSource( const edm::ParameterSet& );
00026   virtual ~SiStripFedCablingESSource() {;}
00027   
00028   virtual std::auto_ptr<SiStripFedCabling> produce( const SiStripFedCablingRcd& );
00029   
00030   // Utility methods that generate control structure numbering
00031   static inline uint16_t fecCrate( const uint16_t& module ); // 4 crates within system
00032   static inline uint16_t fecSlot( const uint16_t& module );  // 11 FECs per crate
00033   static inline uint16_t fecRing( const uint16_t& module );  // 8 control rings per FEC
00034   static inline uint16_t ccuAddr( const uint16_t& module );  // 8 CCUMs per control ring
00035   static inline uint16_t ccuChan( const uint16_t& module );  // 8 modules per CCUM
00036   
00037  protected:
00038   
00039   virtual void setIntervalFor( const edm::eventsetup::EventSetupRecordKey&,
00040                                const edm::IOVSyncValue&,
00041                                edm::ValidityInterval& );
00042   
00043  private:
00044   
00045   SiStripFedCablingESSource( const SiStripFedCablingESSource& );
00046   const SiStripFedCablingESSource& operator=( const SiStripFedCablingESSource& );
00047 
00048   virtual SiStripFedCabling* makeFedCabling() = 0; 
00049 
00050 };
00051 
00052 // ---------- inline methods ----------
00053 
00054 uint16_t SiStripFedCablingESSource::fecCrate( const uint16_t& module ) { return (module/(8*8*8*11)) % 4 + 1; }
00055 uint16_t SiStripFedCablingESSource::fecSlot( const uint16_t& module ) { return (module/(8*8*8)) % 11 + 2; }
00056 uint16_t SiStripFedCablingESSource::fecRing( const uint16_t& module ) { return (module/(8*8)) % 8 + 1; }
00057 uint16_t SiStripFedCablingESSource::ccuAddr( const uint16_t& module ) { return (module/8) % 8 + 1; }
00058 uint16_t SiStripFedCablingESSource::ccuChan( const uint16_t& module ) { return (module/1) % 8 + 16; }
00059 
00060 #endif // CalibTracker_SiStripConnectivity_SiStripFedCablingESSource_H
00061 

Generated on Tue Jun 9 17:25:50 2009 for CMSSW by  doxygen 1.5.4