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
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
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
00113 void checkMapInputValues(SiStripConfigDb::DcuDetIdsV dcuDetIds_, DcuPsuVector dcuPsus_);
00114
00115
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
00122 std::vector< std::pair< std::vector<uint16_t> , std::vector<uint32_t> > > dcu_device_addr_vector;
00123 };
00124 #endif