34 std::vector<const DccSpec*> dccs = pactCabling->
dccList();
35 for (
auto it1 : dccs) {
36 const std::vector<TriggerBoardSpec> & rmbs = it1->triggerBoards();
37 for (
auto const & it2 : rmbs) {
38 const std::vector<LinkConnSpec> & links = it2.linkConns();
39 for (
auto const & it3 : links) {
40 const std::vector<LinkBoardSpec> & lbs = it3.linkBoards();
41 for (std::vector<LinkBoardSpec>::const_iterator it4=lbs.begin(); it4 != lbs.end(); ++it4) {
44 std::string lbName = lbNameCH.substr(0,lbNameCH.size()-4);
45 std::vector<EleIndex> omtfEles = omtfLink2Ele.
omtfEleIndex(lbName);
48 for (
const auto & omtfEle : omtfEles ) omtf2rpc[omtfEle]= rpcEle;
53 LogTrace(
" ") <<
" SIZE OF OMTF to RPC map TRANSLATION is: " << omtf2rpc.size() << std::endl;
60 for (
const auto & omtf2rpc : omtf2rpcs) {
61 std::pair<EleIndex,EleIndex> & omtfs = pact2omtfs[omtf2rpc.second];
62 if (omtfs.first.fed()==0) omtfs.first = omtf2rpc.first;
63 else if (omtfs.second.fed()==0) omtfs.second = omtf2rpc.first;
64 else edm::LogError(
" translatePact2Omtf ") <<
" PROBLEM LinkBoardElectronicIndex already USED!!!! ";
75 for (
const auto & item : amcMap ) {
76 unsigned int fedId = item.first.getFED();
77 unsigned int amcSlot = item.first.getAMCNumber();
78 unsigned int link = item.first.getAMCInput();
82 if (fedId==1380) processorNameStr =
"OMTFn";
else processorNameStr =
"OMTFp";
83 processorNameStr += std::to_string(amcSlot/2+1);
86 std::map< unsigned int, std::string > & li2lb = link2lbName[processorName];
87 std::map< std::string, unsigned int > & lb2li = lbName2link[processorName];
91 lbName2OmtfIndex[lbName].push_back(ele);
99 LogTrace(
"")<<
" reading OmtfRpcLinksMap from: "<<fName;
101 LogTrace(
"")<<
" Unable to open file "<<fName;
103 throw std::runtime_error(
"Unable to open OmtfRpcLinksMap file " + fName);
107 while (std::getline(inFile, line)) {
108 line.erase(0, line.find_first_not_of(
" \t\r\n"));
109 if (line.empty() || !line.compare(0,2,
"--"))
continue;
110 std::stringstream ss(line);
112 unsigned int link, dbId;
113 if (ss >> processorName >> link >> lbName >> dbId) {
114 std::map< unsigned int, std::string > & li2lb = link2lbName[processorName];
115 std::map< std::string, unsigned int > & lb2li = lbName2link[processorName];
116 li2lb[link] = lbName;
117 lb2li[lbName] = link;
119 lbName2OmtfIndex[lbName].push_back(ele);
126 const auto pos = lbName2OmtfIndex.find(lbName);
127 return pos != lbName2OmtfIndex.end() ?
pos->second : std::vector<EleIndex>() ;
std::vector< EleIndex > omtfEleIndex(const std::string &lbName) const
MapLBIndex2EleIndex translatePact2Omtf(const RpcLinkMap &omtfLnks, const RPCReadOutMapping *pactCabling)
bool operator()(const LinkBoardElectronicIndex &o1, const LinkBoardElectronicIndex &o2) const
std::vector< const DccSpec * > dccList() const
all FEDs in map
std::map< EleIndex, LinkBoardElectronicIndex > MapEleIndex2LBIndex
std::map< LinkBoardElectronicIndex, std::pair< EleIndex, EleIndex >, lessLinkBoardElectronicIndex > MapLBIndex2EleIndex
std::map< RPCAMCLink, RPCLBLink > map_type
MapEleIndex2LBIndex translateOmtf2Pact(const RpcLinkMap &omtfLnks, const RPCReadOutMapping *pactCabling)
void init(const edm::EventSetup &es)