CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes | Friends
LinkBoardSpec Class Reference

#include <LinkBoardSpec.h>

Public Member Functions

void add (const FebConnectorSpec &feb)
 attach feb More...
 
const FebConnectorSpecfeb (int febInputNum) const
 get Feb by its connection number to this board More...
 
const std::vector
< FebConnectorSpec > & 
febs () const
 
std::string linkBoardName () const
 LB name as in OMDS. More...
 
int linkBoardNumInLink () const
 this LB number in link More...
 
 LinkBoardSpec ()
 dummy More...
 
 LinkBoardSpec (bool master, int linkBoardNumInLin, int lbCode)
 
bool master ()
 true if master LB (is it of any use?) More...
 
std::string print (int depth=0) const
 debud printout More...
 

Private Member Functions

template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Attributes

int theCode
 
std::vector< FebConnectorSpectheFebs
 
int theLinkBoardNumInLink
 
bool theMaster
 

Friends

class boost::serialization::access
 
template<typename CondSerializationT , typename Enabled >
struct cond::serialization::access
 

Detailed Description

RPC LinkBoard Specification for readout decoding. Provide chamber location specification (as in DB throught FEBs)

Definition at line 13 of file LinkBoardSpec.h.

Constructor & Destructor Documentation

LinkBoardSpec::LinkBoardSpec ( )
inline

dummy

Definition at line 16 of file LinkBoardSpec.h.

16 : theMaster(false) {}
LinkBoardSpec::LinkBoardSpec ( bool  master,
int  linkBoardNumInLin,
int  lbCode 
)

real ctor specifyig LB if this LB is master, its number in link, and which chamber it is serving

Definition at line 5 of file LinkBoardSpec.cc.

Member Function Documentation

void LinkBoardSpec::add ( const FebConnectorSpec feb)

attach feb

Definition at line 7 of file LinkBoardSpec.cc.

References theFebs.

Referenced by RPCEMap::convert(), counter.Counter::register(), SequenceTypes.Task::remove(), and SequenceTypes.Task::replace().

7 { theFebs.push_back(feb); }
std::vector< FebConnectorSpec > theFebs
Definition: LinkBoardSpec.h:45
const FebConnectorSpec * LinkBoardSpec::feb ( int  febInputNum) const

get Feb by its connection number to this board

Definition at line 9 of file LinkBoardSpec.cc.

References theFebs.

Referenced by RPCReadOutMapping::detUnitFrame(), RPCReadOutMapping::getLBforChamber(), and RPCReadOutMapping::getRAWSpecForCMSChamberSrip().

9  {
10  //FIXME - temporary implementaion, to be replace by LUT (in preparation)
11  typedef std::vector<FebConnectorSpec>::const_iterator IT;
12  for (IT it = theFebs.begin(); it != theFebs.end(); it++) {
13  if (febInputNum == it->linkBoardInputNum())
14  return &(*it);
15  }
16  return nullptr;
17 }
std::vector< LinkConnSpec >::const_iterator IT
std::vector< FebConnectorSpec > theFebs
Definition: LinkBoardSpec.h:45
const std::vector<FebConnectorSpec>& LinkBoardSpec::febs ( ) const
inline

Definition at line 36 of file LinkBoardSpec.h.

References theFebs.

Referenced by RPCReadOutMapping::rawDataFrame().

36 { return theFebs; }
std::vector< FebConnectorSpec > theFebs
Definition: LinkBoardSpec.h:45
std::string LinkBoardSpec::linkBoardName ( ) const

LB name as in OMDS.

Definition at line 19 of file LinkBoardSpec.cc.

References jetcorrextractor::sign(), AlCaHLTBitMon_QueryRunRegistry::string, theCode, and theLinkBoardNumInLink.

19  {
20  std::ostringstream lbName;
21  std::string char1Val[2] = {"B", "E"}; // 1,2
22  std::string char2Val[3] = {"N", "M", "P"}; // 0,1,2
23  std::string char4Val[9] = {"0", "1", "2", "3", "A", "B", "C", "D", "E"}; // 0,...,8
24  int n3 = theCode % 10;
25  int num3 = (theCode % 100) / 10;
26  int n2 = (theCode % 1000) / 100;
27  int n1 = (theCode % 10000) / 1000;
28  int wheel = (theCode % 100000) / 10000;
29  if (n2 == 0)
30  wheel = -wheel;
31  int sector = theCode / 100000;
32  std::string sign = "";
33  if (wheel > 0)
34  sign = "+";
35  lbName << "LB_R" << char1Val[n1 - 1] << sign << wheel << "_S" << sector << "_" << char1Val[n1 - 1] << char2Val[n2]
36  << num3 << char4Val[n3] << "_CH" << theLinkBoardNumInLink;
37  return lbName.str();
38 }
double sign(double x)
int theLinkBoardNumInLink
Definition: LinkBoardSpec.h:43
int LinkBoardSpec::linkBoardNumInLink ( ) const
inline

this LB number in link

Definition at line 26 of file LinkBoardSpec.h.

References theLinkBoardNumInLink.

Referenced by RPCReadOutMappingWithFastSearch::init(), and RPCReadOutMapping::rawDataFrame().

26 { return theLinkBoardNumInLink; }
int theLinkBoardNumInLink
Definition: LinkBoardSpec.h:43
bool LinkBoardSpec::master ( )
inline

true if master LB (is it of any use?)

Definition at line 23 of file LinkBoardSpec.h.

References theMaster.

23 { return theMaster; }
std::string LinkBoardSpec::print ( int  depth = 0) const

debud printout

Definition at line 40 of file LinkBoardSpec.cc.

References str, AlCaHLTBitMon_QueryRunRegistry::string, theFebs, theLinkBoardNumInLink, and theMaster.

Referenced by RPCReadOutMapping::detUnitFrame().

40  {
41  std::ostringstream str;
42  std::string type = (theMaster) ? "master" : "slave";
43  str << " LinkBoardSpec: " << std::endl
44  << " --->" << type << " linkBoardNumInLink: " << theLinkBoardNumInLink << std::endl;
45  depth--;
46  if (depth >= 0) {
47  typedef std::vector<FebConnectorSpec>::const_iterator IT;
48  for (IT it = theFebs.begin(); it != theFebs.end(); it++)
49  str << (*it).print(depth);
50  }
51  return str.str();
52 }
int theLinkBoardNumInLink
Definition: LinkBoardSpec.h:43
std::vector< LinkConnSpec >::const_iterator IT
std::vector< FebConnectorSpec > theFebs
Definition: LinkBoardSpec.h:45
#define str(s)
template<class Archive >
void LinkBoardSpec::serialize ( Archive &  ar,
const unsigned int  version 
)
private

Friends And Related Function Documentation

friend class boost::serialization::access
friend

Definition at line 47 of file LinkBoardSpec.h.

template<typename CondSerializationT , typename Enabled >
friend struct cond::serialization::access
friend

Definition at line 47 of file LinkBoardSpec.h.

Member Data Documentation

int LinkBoardSpec::theCode
private

Definition at line 44 of file LinkBoardSpec.h.

Referenced by linkBoardName().

std::vector<FebConnectorSpec> LinkBoardSpec::theFebs
private

Definition at line 45 of file LinkBoardSpec.h.

Referenced by add(), feb(), febs(), and print().

int LinkBoardSpec::theLinkBoardNumInLink
private

Definition at line 43 of file LinkBoardSpec.h.

Referenced by linkBoardName(), linkBoardNumInLink(), and print().

bool LinkBoardSpec::theMaster
private

Definition at line 42 of file LinkBoardSpec.h.

Referenced by master(), and print().