CMS 3D CMS Logo

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

#include <SiPixelFedCablingTree.h>

Inheritance diagram for SiPixelFedCablingTree:
SiPixelFedCabling

Public Types

typedef
sipixelobjects::PixelFEDCabling 
PixelFEDCabling
 

Public Member Functions

void addFed (const PixelFEDCabling &f)
 add cabling for one fed More...
 
void addItem (unsigned int fedId, unsigned int linkId, const sipixelobjects::PixelROC &roc)
 
int checkNumbering () const
 
std::unordered_map< uint32_t,
unsigned int > 
det2fedMap () const final
 
std::map< uint32_t,
std::vector
< sipixelobjects::CablingPathToDetUnit > > 
det2PathMap () const final
 
const PixelFEDCablingfed (unsigned int idFed) const
 get fed identified by its id More...
 
std::vector< const
PixelFEDCabling * > 
fedList () const
 
const sipixelobjects::PixelROCfindItem (const sipixelobjects::CablingPathToDetUnit &path) const final
 
const sipixelobjects::PixelROCfindItemInFed (const sipixelobjects::CablingPathToDetUnit &path, const PixelFEDCabling *aFed) const
 
std::vector
< sipixelobjects::CablingPathToDetUnit
pathToDetUnit (uint32_t rawDetId) const final
 
bool pathToDetUnitHasDetUnit (uint32_t rawDetId, unsigned int fedId) const final
 
std::string print (int depth=0) const
 
 SiPixelFedCablingTree (const std::string &version="")
 
std::string version () const override
 map version More...
 
 ~SiPixelFedCablingTree () override
 
- Public Member Functions inherited from SiPixelFedCabling
virtual ~SiPixelFedCabling ()
 

Private Attributes

std::unordered_map< int,
PixelFEDCabling
theFedCablings
 
std::string theVersion
 

Detailed Description

Definition at line 13 of file SiPixelFedCablingTree.h.

Member Typedef Documentation

Definition at line 15 of file SiPixelFedCablingTree.h.

Constructor & Destructor Documentation

SiPixelFedCablingTree::SiPixelFedCablingTree ( const std::string &  version = "")
inline

Definition at line 17 of file SiPixelFedCablingTree.h.

17 : theVersion(version) {}
std::string version() const override
map version
SiPixelFedCablingTree::~SiPixelFedCablingTree ( )
inlineoverride

Definition at line 19 of file SiPixelFedCablingTree.h.

19 {}

Member Function Documentation

void SiPixelFedCablingTree::addFed ( const PixelFEDCabling f)

add cabling for one fed

Definition at line 90 of file SiPixelFedCablingTree.cc.

References validate-o2o-wbm::f, gpuClustering::id, and sipixelobjects::PixelFEDCabling::id().

90  {
91  int id = f.id();
92  theFedCablings[id] = f;
93 }
uint16_t *__restrict__ id
std::unordered_map< int, PixelFEDCabling > theFedCablings
void SiPixelFedCablingTree::addItem ( unsigned int  fedId,
unsigned int  linkId,
const sipixelobjects::PixelROC roc 
)

Definition at line 123 of file SiPixelFedCablingTree.cc.

References sipixelobjects::PixelFEDCabling::addItem(), l1tstage2_dqm_sourceclient-live_cfg::fedId, and sipixelobjects::PixelFEDCabling::id().

Referenced by SiPixelFedCablingMapBuilder::produce().

123  {
125  if (cabling.id() != fedId)
126  cabling = PixelFEDCabling(fedId);
127  cabling.addItem(linkId, roc);
128 }
void addItem(unsigned int linkId, const PixelROC &roc)
sipixelobjects::PixelFEDCabling PixelFEDCabling
std::unordered_map< int, PixelFEDCabling > theFedCablings
int SiPixelFedCablingTree::checkNumbering ( ) const

Definition at line 150 of file SiPixelFedCablingTree.cc.

References gather_cfg::cout, and mps_update::status.

150  {
151  int status = 0;
152  for (auto im = theFedCablings.begin(); im != theFedCablings.end(); ++im) {
153  if (im->first != static_cast<int>(im->second.id())) {
154  status = 1;
155  std::cout << "PROBLEM WITH FED ID!!" << im->first << " vs: " << im->second.id() << std::endl;
156  }
157  im->second.checkLinkNumbering();
158  }
159  return status;
160 }
list status
Definition: mps_update.py:107
std::unordered_map< int, PixelFEDCabling > theFedCablings
tuple cout
Definition: gather_cfg.py:144
std::unordered_map< uint32_t, unsigned int > SiPixelFedCablingTree::det2fedMap ( ) const
finalvirtual

Implements SiPixelFedCabling.

Definition at line 53 of file SiPixelFedCablingTree.cc.

References MainPageGenerator::link, mps_fire::result, and PixelMapPlotter::roc.

53  {
54  std::unordered_map<uint32_t, unsigned int> result;
55  for (auto im = theFedCablings.begin(); im != theFedCablings.end(); ++im) {
56  auto const& aFed = im->second;
57  for (unsigned int idxLink = 1; idxLink <= aFed.numberOfLinks(); idxLink++) {
58  auto link = aFed.link(idxLink);
59  if (!link)
60  continue;
61  unsigned int numberOfRocs = link->numberOfROCs();
62  for (unsigned int idxRoc = 1; idxRoc <= numberOfRocs; idxRoc++) {
63  auto roc = link->roc(idxRoc);
64  result[roc->rawId()] = aFed.id(); // we know that a det is in one fed only...
65  }
66  }
67  }
68  return result;
69 }
tuple result
Definition: mps_fire.py:311
std::unordered_map< int, PixelFEDCabling > theFedCablings
std::map< uint32_t, std::vector< sipixelobjects::CablingPathToDetUnit > > SiPixelFedCablingTree::det2PathMap ( ) const
finalvirtual

Implements SiPixelFedCabling.

Definition at line 71 of file SiPixelFedCablingTree.cc.

References MainPageGenerator::link, fed_dqm_sourceclient-live_cfg::path, mps_fire::result, and PixelMapPlotter::roc.

71  {
72  std::map<uint32_t, std::vector<sipixelobjects::CablingPathToDetUnit> > result;
73  for (auto im = theFedCablings.begin(); im != theFedCablings.end(); ++im) {
74  auto const& aFed = im->second;
75  for (unsigned int idxLink = 1; idxLink <= aFed.numberOfLinks(); idxLink++) {
76  auto link = aFed.link(idxLink);
77  if (!link)
78  continue;
79  unsigned int numberOfRocs = link->numberOfROCs();
80  for (unsigned int idxRoc = 1; idxRoc <= numberOfRocs; idxRoc++) {
81  auto roc = link->roc(idxRoc);
82  CablingPathToDetUnit path = {aFed.id(), link->id(), roc->idInLink()};
83  result[roc->rawId()].push_back(path);
84  }
85  }
86  }
87  return result;
88 }
tuple result
Definition: mps_fire.py:311
std::unordered_map< int, PixelFEDCabling > theFedCablings
const PixelFEDCabling * SiPixelFedCablingTree::fed ( unsigned int  idFed) const

get fed identified by its id

Definition at line 95 of file SiPixelFedCablingTree.cc.

Referenced by PixelDataFormatter::unpackFEDErrors().

95  {
96  auto it = theFedCablings.find(id);
97  return (it == theFedCablings.end()) ? nullptr : &(*it).second;
98 }
std::unordered_map< int, PixelFEDCabling > theFedCablings
std::vector< const PixelFEDCabling * > SiPixelFedCablingTree::fedList ( ) const

Definition at line 112 of file SiPixelFedCablingTree.cc.

References a, b, sipixelobjects::PixelFEDCabling::id(), and mps_fire::result.

Referenced by SiPixelFedCablingMap::SiPixelFedCablingMap().

112  {
113  std::vector<const PixelFEDCabling*> result;
114  for (IMAP im = theFedCablings.begin(); im != theFedCablings.end(); im++) {
115  result.push_back(&(im->second));
116  }
117  std::sort(result.begin(), result.end(), [](const PixelFEDCabling* a, const PixelFEDCabling* b) {
118  return a->id() < b->id();
119  });
120  return result;
121 }
tuple result
Definition: mps_fire.py:311
std::unordered_map< int, SiPixelFedCablingTree::PixelFEDCabling >::const_iterator IMAP
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119
std::unordered_map< int, PixelFEDCabling > theFedCablings
const sipixelobjects::PixelROC * SiPixelFedCablingTree::findItem ( const sipixelobjects::CablingPathToDetUnit path) const
finalvirtual

Implements SiPixelFedCabling.

Definition at line 130 of file SiPixelFedCablingTree.cc.

References sipixelobjects::CablingPathToDetUnit::fed, sipixelobjects::CablingPathToDetUnit::link, sipixelobjects::PixelFEDCabling::link(), sipixelobjects::CablingPathToDetUnit::roc, sipixelobjects::PixelFEDLink::roc(), and PixelMapPlotter::roc.

130  {
131  const PixelROC* roc = nullptr;
132  const PixelFEDCabling* aFed = fed(path.fed);
133  if (aFed) {
134  const PixelFEDLink* aLink = aFed->link(path.link);
135  if (aLink)
136  roc = aLink->roc(path.roc);
137  }
138  return roc;
139 }
const PixelFEDCabling * fed(unsigned int idFed) const
get fed identified by its id
const PixelFEDLink * link(unsigned int id) const
return link identified by id. Link id&#39;s are ranged [1, numberOfLinks]
const sipixelobjects::PixelROC * SiPixelFedCablingTree::findItemInFed ( const sipixelobjects::CablingPathToDetUnit path,
const PixelFEDCabling aFed 
) const

Definition at line 141 of file SiPixelFedCablingTree.cc.

References sipixelobjects::CablingPathToDetUnit::link, sipixelobjects::PixelFEDCabling::link(), sipixelobjects::CablingPathToDetUnit::roc, sipixelobjects::PixelFEDLink::roc(), and PixelMapPlotter::roc.

Referenced by SiPixelFrameConverter::toRoc().

142  {
143  const PixelROC* roc = nullptr;
144  const PixelFEDLink* aLink = aFed->link(path.link);
145  if (aLink)
146  roc = aLink->roc(path.roc);
147  return roc;
148 }
const PixelFEDLink * link(unsigned int id) const
return link identified by id. Link id&#39;s are ranged [1, numberOfLinks]
std::vector< sipixelobjects::CablingPathToDetUnit > SiPixelFedCablingTree::pathToDetUnit ( uint32_t  rawDetId) const
finalvirtual

Implements SiPixelFedCabling.

Definition at line 11 of file SiPixelFedCablingTree.cc.

References sipixelobjects::PixelFEDLink::id(), sipixelobjects::PixelFEDCabling::id(), sipixelobjects::PixelROC::idInLink(), sipixelobjects::PixelFEDCabling::link(), MainPageGenerator::link, sipixelobjects::PixelFEDCabling::numberOfLinks(), sipixelobjects::PixelFEDLink::numberOfROCs(), fed_dqm_sourceclient-live_cfg::path, sipixelobjects::PixelROC::rawId(), mps_fire::result, sipixelobjects::PixelFEDLink::roc(), and PixelMapPlotter::roc.

11  {
12  std::vector<sipixelobjects::CablingPathToDetUnit> result;
13  for (auto im = theFedCablings.begin(); im != theFedCablings.end(); ++im) {
14  const PixelFEDCabling& aFed = im->second;
15  for (unsigned int idxLink = 1; idxLink <= aFed.numberOfLinks(); idxLink++) {
16  const PixelFEDLink* link = aFed.link(idxLink);
17  if (!link)
18  continue;
19  unsigned int numberOfRocs = link->numberOfROCs();
20  for (unsigned int idxRoc = 1; idxRoc <= numberOfRocs; idxRoc++) {
21  const PixelROC* roc = link->roc(idxRoc);
22  if (rawDetId == roc->rawId()) {
23  CablingPathToDetUnit path = {aFed.id(), link->id(), roc->idInLink()};
24  result.push_back(path);
25  }
26  }
27  }
28  }
29  return result;
30 }
unsigned int numberOfLinks() const
number of links in FED
unsigned int idInLink() const
id of this ROC in parent Link.
Definition: PixelROC.h:40
tuple result
Definition: mps_fire.py:311
uint32_t rawId() const
return the DetUnit to which this ROC belongs to.
Definition: PixelROC.h:34
const PixelFEDLink * link(unsigned int id) const
return link identified by id. Link id&#39;s are ranged [1, numberOfLinks]
std::unordered_map< int, PixelFEDCabling > theFedCablings
bool SiPixelFedCablingTree::pathToDetUnitHasDetUnit ( uint32_t  rawDetId,
unsigned int  fedId 
) const
finalvirtual

Implements SiPixelFedCabling.

Definition at line 32 of file SiPixelFedCablingTree.cc.

References l1tstage2_dqm_sourceclient-live_cfg::fedId, sipixelobjects::PixelFEDCabling::id(), sipixelobjects::PixelFEDCabling::link(), MainPageGenerator::link, sipixelobjects::PixelFEDCabling::numberOfLinks(), sipixelobjects::PixelFEDLink::numberOfROCs(), sipixelobjects::PixelROC::rawId(), sipixelobjects::PixelFEDLink::roc(), and PixelMapPlotter::roc.

32  {
33  for (auto im = theFedCablings.begin(); im != theFedCablings.end(); ++im) {
34  const PixelFEDCabling& aFed = im->second;
35  if (aFed.id() == fedId) {
36  for (unsigned int idxLink = 1; idxLink <= aFed.numberOfLinks(); idxLink++) {
37  const PixelFEDLink* link = aFed.link(idxLink);
38  if (!link)
39  continue;
40  unsigned int numberOfRocs = link->numberOfROCs();
41  for (unsigned int idxRoc = 1; idxRoc <= numberOfRocs; idxRoc++) {
42  const PixelROC* roc = link->roc(idxRoc);
43  if (rawDetId == roc->rawId()) {
44  return true;
45  }
46  }
47  }
48  }
49  }
50  return false;
51 }
unsigned int numberOfLinks() const
number of links in FED
uint32_t rawId() const
return the DetUnit to which this ROC belongs to.
Definition: PixelROC.h:34
const PixelFEDLink * link(unsigned int id) const
return link identified by id. Link id&#39;s are ranged [1, numberOfLinks]
std::unordered_map< int, PixelFEDCabling > theFedCablings
string SiPixelFedCablingTree::print ( int  depth = 0) const

Definition at line 100 of file SiPixelFedCablingTree.cc.

References submitPVResolutionJobs::out.

100  {
101  ostringstream out;
102  if (depth-- >= 0) {
103  out << theVersion << endl;
104  for (IMAP it = theFedCablings.begin(); it != theFedCablings.end(); it++) {
105  out << (*it).second.print(depth);
106  }
107  }
108  out << endl;
109  return out.str();
110 }
std::unordered_map< int, SiPixelFedCablingTree::PixelFEDCabling >::const_iterator IMAP
std::unordered_map< int, PixelFEDCabling > theFedCablings
std::string SiPixelFedCablingTree::version ( ) const
inlineoverridevirtual

map version

Implements SiPixelFedCabling.

Definition at line 30 of file SiPixelFedCablingTree.h.

References theVersion.

Referenced by validation.Sample::datasetpattern(), and validation.Sample::filename().

30 { return theVersion; }

Member Data Documentation

std::unordered_map<int, PixelFEDCabling> SiPixelFedCablingTree::theFedCablings
private

Definition at line 51 of file SiPixelFedCablingTree.h.

std::string SiPixelFedCablingTree::theVersion
private

Definition at line 50 of file SiPixelFedCablingTree.h.

Referenced by version().