20 const DccSpec &ddc = (*im).second;
21 return (im !=
theFeds.end()) ? &ddc :
nullptr;
27 std::vector<const DccSpec *>
result;
30 result.push_back(&(im->second));
37 return std::make_pair(0, -1);
42 return std::make_pair(
first->first,
last->first);
48 std::vector<std::pair<LinkBoardElectronicIndex, LinkBoardPackedStrip> >
result;
51 const uint32_t &rawDetId = stripInDetUnit.first;
52 const int &stripInDU = stripInDetUnit.second;
55 const DccSpec &dccSpec = (*im).second;
56 const std::vector<TriggerBoardSpec> &triggerBoards = dccSpec.
triggerBoards();
57 for (std::vector<TriggerBoardSpec>::const_iterator
it = triggerBoards.begin();
it != triggerBoards.end();
it++) {
59 typedef std::vector<const LinkConnSpec *> LINKS;
61 for (LINKS::const_iterator ic = linkConns.begin(); ic != linkConns.end(); ic++) {
64 for (std::vector<LinkBoardSpec>::const_iterator
ib =
boards.begin();
ib !=
boards.end();
ib++) {
72 const std::vector<FebConnectorSpec> &febs = board.
febs();
73 for (std::vector<FebConnectorSpec>::const_iterator ifc = febs.begin(); ifc != febs.end(); ifc++) {
75 if (febConnector.
rawId() != rawDetId)
78 for (
int istrip = 0; istrip < febConnector.
nstrips(); istrip++) {
79 int stripPinInFeb = febConnector.
cablePinNum(istrip);
110 uint32_t detUnit = 0;
112 int febInLB = lbstrip.
febInLB();
117 detUnit = feb->
rawId();
119 if (
strip.chamberStripNumber > -1) {
120 stripInDU =
strip.chamberStripNumber;
125 LogDebug(
"") <<
"problem with stip for febInLB: " << febInLB <<
" strip pin: " << stripPinInFeb
126 <<
" strip pin: " << stripPinInFeb <<
" for linkBoard: " <<
location.
print(3);
130 LogDebug(
"") <<
"problem with detUnit for febInLB: " << febInLB <<
" for linkBoard: " <<
location.
print(1);
132 return std::make_pair(detUnit, stripInDU);
141 int dccInputChannel)
const {
143 linkboard.
dccId = 790;
146 for (
int k = 0;
k < 18;
k++) {
148 for (
int j = 0;
j < 3;
j++) {
152 for (
int i = 1;
i < 7;
i++) {
155 for (
int l = 1;
l < 17;
l++) {
159 int bitInLink = (
i - 1) * 16 +
l - 1;
160 std::pair<LinkBoardElectronicIndex, int> stripInfo(linkboard, bitInLink);
170 std::cout <<
"Strip: " <<
strip <<
" not found for detector: " << aDet << std::endl;
171 std::pair<LinkBoardElectronicIndex, int> dummyStripInfo(linkboard, -99);
172 return dummyStripInfo;
176 std::vector<const LinkBoardSpec *> vLBforChamber;
179 linkboard.
dccId = 790;
185 for (
int k = 0;
k < 18;
k++) {
188 for (
int j = 0;
j < 3;
j++) {
194 for (
int j = 0;
j < 6;
j++) {
199 if (chName ==
name) {
209 return vLBforChamber;
const LinkBoardSpec * linkBoard(int linkBoardNumInLink) const
LB served by this link, identified by its position in link.
ALPAKA_FN_ACC int dcc(int ieta, int iphi)
RPCReadOutMapping(const std::string &version="")
std::string print(int depth=0) const
debud printout
const std::vector< LinkBoardSpec > & linkBoards() const
int dccInputChannelNum() const
input channel number to DCC
uint32_t rawId() const
DetUnit to which data belongs.
std::map< int, DccSpec >::const_iterator IMAP
const LinkConnSpec * linkConn(int tbInputNumber) const
link attached to this TB with given input number
const int nstrips() const
location
10.6 INPUT and workflows
const ChamberLocationSpec & chamber() const
int stripPinInFeb() const
const TriggerBoardSpec * triggerBoard(int channelNumber) const
TB attached to channel.
int linkBoardInputNum() const
this FEB channel in LinkBoard
std::vector< const LinkBoardSpec * > getLBforChamber(const std::string &name) const
const std::vector< FebConnectorSpec > & febs() const
int triggerBoardInputNumber() const
this link input number in TriggerBoard
virtual const LinkBoardSpec * location(const LinkBoardElectronicIndex &ele) const
conversion between electronic and detector indexing
std::map< int, DccSpec > theFeds
const DccSpec * dcc(int dccId) const
FED identified by ID.
void add(const DccSpec &dcc)
attach FED to map
int linkBoardNumInLink() const
this LB number in link
std::vector< const DccSpec * > dccList() const
all FEDs in map
unsigned dccId(DetId const &, EcalElectronicsMapping const *)
const FebConnectorSpec * feb(int febInputNum) const
get Feb by its connection number to this board
const ChamberStripSpec strip(int pinNumber) const
strip info for input pin
std::pair< LinkBoardElectronicIndex, int > getRAWSpecForCMSChamberSrip(uint32_t detId, int strip, int dccInputChannel) const
std::vector< std::pair< LinkBoardElectronicIndex, LinkBoardPackedStrip > > rawDataFrame(const StripInDetUnit &duFrame) const
connection "paths" that lead from one digi to one strip
virtual StripInDetUnit detUnitFrame(const LinkBoardSpec &location, const LinkBoardPackedStrip &packedStrip) const
convert strip location as in raw data (LB and LBchannel) to detUnit frame
std::pair< int, int > dccNumberRange() const
Range of FED IDs in map (min and max id)
std::string chamberLocationName() const
const int chamberStripNum(int istrip) const
std::vector< const LinkConnSpec * > enabledLinkConns() const
not masked links belonging to this TB
const int cablePinNum(int istrip) const
const std::vector< TriggerBoardSpec > & triggerBoards() const
std::pair< uint32_t, int > StripInDetUnit
first member is DetUnit ID, second strip in DetUnit frame