CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/CalibTracker/SiStripDCS/interface/SiStripPsuDetIdMap.h

Go to the documentation of this file.
00001 #ifndef SISTRIPPSUDETIDMAP_H
00002 #define SISTRIPPSUDETIDMAP_H
00003 
00004 #include <memory>
00005 #include "FWCore/ServiceRegistry/interface/Service.h"
00006 #include "FWCore/Framework/interface/ESHandle.h"
00007 #include "FWCore/Framework/interface/Event.h"
00008 #include "DataFormats/Common/interface/Handle.h"
00009 #include "FWCore/Framework/interface/EventSetup.h"
00010 #include "DataFormats/Common/interface/MapOfVectors.h"
00011 
00012 #include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
00013 #include "OnlineDB/SiStripConfigDb/interface/SiStripConfigDb.h"
00014 #include "OnlineDB/SiStripConfigDb/interface/SiStripDbParams.h"
00015 #include "DeviceFactory.h"
00016 
00017 #include "boost/cstdint.hpp"
00018 #include <vector>
00019 #include <string>
00020 #include <iostream>
00021 #include <fstream>
00022 #include <sstream>
00023 #include <ostream>
00024 
00025 class SiStripConfigDb;
00026 
00033 class SiStripPsuDetIdMap
00034 {
00035  public:
00037   SiStripPsuDetIdMap();
00039   ~SiStripPsuDetIdMap();
00040 
00041   std::vector<uint32_t> getLvDetID(std::string pvss);
00042   std::vector<uint32_t> getHvDetID(std::string pvss);
00043 
00045   std::vector<uint32_t> getDetID(std::string pvss);
00047   std::string getPSUName(uint32_t detid);
00049   std::string getPSUName(uint32_t detid, std::string group);
00051   std::string getDetectorLocation(uint32_t detid);
00053   std::string getDetectorLocation(std::string pvss);
00055   std::string getDetectorLocation(uint32_t detid, std::string group);
00057   uint32_t getDcuId(std::string pvss);
00059   uint32_t getDcuId(uint32_t detid);
00060   
00062   std::vector< std::pair<uint32_t, std::string> > getPsuDetIdMap() {return pgMap;}
00064   std::vector<std::string> getDetectorLocations() {return detectorLocations;}
00066   std::vector<uint32_t> getDcuIds() {return dcuIds;}
00068   std::vector< std::pair<uint32_t, std::string> > getControlPsuDetIdMap() {return cgMap;}
00070   std::vector<std::string> getControlDetectorLocations() {return controlLocations;}
00072   std::vector<uint32_t> getCgDcuIds() {return cgDcuIds;}
00074   std::vector<uint32_t> getCcuDcuIds() {return ccuDcuIds;}
00075   
00077   void printMap();
00079   void printControlMap();
00081   void BuildMap();
00082 
00087   void BuildMap( const std::string & mapFile );
00089   void BuildMap( const std::string & mapFile, std::vector< std::pair<uint32_t, std::string> > & map );
00090 
00092   std::vector< std::pair<uint32_t, std::string> > getDcuPsuMap();
00094   int IsHVChannel(std::string pvss);
00095   
00096  private:
00097   // typedefs
00098   typedef std::vector<TkDcuPsuMap *> DcuPsuVector ;
00099   typedef std::vector< std::pair<uint32_t, std::string> > PsuDetIdMap;
00100   typedef edm::MapOfVectors<std::string,TkDcuPsuMap*> DcuPsus;
00101   typedef DcuPsus::range DcuPsusRange;
00103   void getDcuPsuMap(DcuPsusRange &pRange, DcuPsusRange &cRange, std::string partition);
00105   //  std::vector< std::pair<uint32_t, SiStripConfigDb::DeviceAddress> >  retrieveDcuDeviceAddresses(std::string partition);
00106   std::vector< std::pair< std::vector<uint16_t> , std::vector<uint32_t> > > retrieveDcuDeviceAddresses(std::string partition);
00108   std::vector<uint32_t>  findDcuIdFromDeviceAddress(uint32_t dcuid_);
00110   void clone(DcuPsuVector &input, DcuPsuVector &output);
00112   // for debugging
00113   void checkMapInputValues(SiStripConfigDb::DcuDetIdsV dcuDetIds_, DcuPsuVector dcuPsus_);
00114   
00115   // member variables
00116   edm::Service<SiStripConfigDb> db_;
00117   PsuDetIdMap pgMap, cgMap;
00118   std::vector<std::string> detectorLocations, controlLocations;
00119   std::vector<uint32_t> dcuIds, cgDcuIds, ccuDcuIds;
00120   DcuPsus DcuPsuMapPG_, DcuPsuMapCG_;
00121   //  std::vector< std::pair<uint32_t, SiStripConfigDb::DeviceAddress> > dcu_device_addr_vector;
00122   std::vector< std::pair< std::vector<uint16_t> , std::vector<uint32_t> > > dcu_device_addr_vector;
00123 };
00124 #endif