CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
LinkBoardSpec.cc
Go to the documentation of this file.
1 
3 #include <sstream>
4 
6  : theMaster(m), theLinkBoardNumInLink(l), theCode(n) { }
7 
9 {
10  theFebs.push_back(feb);
11 }
12 
13 const FebConnectorSpec * LinkBoardSpec::feb(int febInputNum) const
14 {
15  //FIXME - temporary implementaion, to be replace by LUT (in preparation)
16  typedef std::vector<FebConnectorSpec>::const_iterator IT;
17  for (IT it=theFebs.begin(); it != theFebs.end(); it++) {
18  if(febInputNum==it->linkBoardInputNum()) return &(*it);
19  }
20  return 0;
21 }
22 
23 std::string LinkBoardSpec::linkBoardName() const
24 {
25  std::ostringstream lbName;
26  std::string char1Val[2]={"B","E"}; // 1,2
27  std::string char2Val[3]={"N","M","P"}; // 0,1,2
28  std::string char4Val[9]={"0","1","2","3","A","B","C","D","E"}; // 0,...,8
29  int n3=theCode%10;
30  int num3=(theCode%100)/10;
31  int n2=(theCode%1000)/100;
32  int n1=(theCode%10000)/1000;
33  int wheel=(theCode%100000)/10000;
34  if(n2==0)wheel=-wheel;
35  int sector=theCode/100000;
36  std::string sign="";
37  if(wheel>0) sign="+";
38  lbName <<"LB_R"<<char1Val[n1-1]<<sign<<wheel<<"_S"<<sector<<"_"<<char1Val[n1-1]<<char2Val[n2]<<num3<<char4Val[n3]<<"_CH"<<theLinkBoardNumInLink;
39  return lbName.str();
40 }
41 
42 std::string LinkBoardSpec::print(int depth ) const
43 {
44  std::ostringstream str;
45  std::string type = (theMaster) ? "master" : "slave";
46  str <<" LinkBoardSpec: " << std::endl
47  <<" --->" <<type<<" linkBoardNumInLink: " << theLinkBoardNumInLink
48  << std::endl;
49  depth--;
50  if (depth >=0) {
51  typedef std::vector<FebConnectorSpec>::const_iterator IT;
52  for (IT it=theFebs.begin(); it != theFebs.end(); it++) str << (*it).print(depth);
53  }
54  return str.str();
55 }
56 
type
Definition: HCALResponse.h:22
void add(const FebConnectorSpec &feb)
attach feb
Definition: LinkBoardSpec.cc:8
std::string print(int depth=0) const
debud printout
int theLinkBoardNumInLink
Definition: LinkBoardSpec.h:41
LinkBoardSpec()
dummy
Definition: LinkBoardSpec.h:14
const FebConnectorSpec * feb(int febInputNum) const
get Feb by its connection number to this board
std::vector< LinkConnSpec >::const_iterator IT
std::string linkBoardName() const
LB name as in OMDS.
std::vector< FebConnectorSpec > theFebs
Definition: LinkBoardSpec.h:43