CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
lst::ModuleConnectionMap Class Reference

#include <ModuleConnectionMap.h>

Public Member Functions

void add (std::string const &)
 
const std::vector< unsigned int > & getConnectedModuleDetIds (unsigned int detid) const
 
void load (std::string const &)
 
 ModuleConnectionMap ()
 
 ModuleConnectionMap (std::string const &filename)
 
void print ()
 
int size () const
 

Private Attributes

std::map< unsigned int, std::vector< unsigned int > > moduleConnections_
 

Detailed Description

Definition at line 10 of file ModuleConnectionMap.h.

Constructor & Destructor Documentation

◆ ModuleConnectionMap() [1/2]

lst::ModuleConnectionMap::ModuleConnectionMap ( )

Definition at line 8 of file ModuleConnectionMap.cc.

8 {}

◆ ModuleConnectionMap() [2/2]

lst::ModuleConnectionMap::ModuleConnectionMap ( std::string const &  filename)

Definition at line 10 of file ModuleConnectionMap.cc.

References corrVsCorr::filename, and svgfig::load().

10 { load(filename); }
void load(std::string const &)

Member Function Documentation

◆ add()

void lst::ModuleConnectionMap::add ( std::string const &  filename)

Definition at line 56 of file ModuleConnectionMap.cc.

References ALCARECOPPSCalTrackBasedSel_cff::detid, corrVsCorr::filename, compare_using_db::ifile, cuy::ii, mps_splice::line, jetUpdater_cfi::sort, contentValuesCheck::ss, AlCaHLTBitMon_QueryRunRegistry::string, and tier0::unique().

Referenced by counter.Counter::register().

56  {
57  std::ifstream ifile;
58  ifile.open(filename.c_str());
60 
61  while (std::getline(ifile, line)) {
62  unsigned int detid;
63  int number_of_connections;
64  std::vector<unsigned int> connected_detids;
65  unsigned int connected_detid;
66 
67  std::stringstream ss(line);
68 
69  ss >> detid >> number_of_connections;
70  connected_detids.reserve(number_of_connections);
71 
72  for (int ii = 0; ii < number_of_connections; ++ii) {
73  ss >> connected_detid;
74  connected_detids.push_back(connected_detid);
75  }
76 
77  auto& thisModuleConnections = moduleConnections_.at(detid);
78 
79  // Concatenate
80  thisModuleConnections.insert(thisModuleConnections.end(), connected_detids.begin(), connected_detids.end());
81 
82  // Sort
83  std::sort(thisModuleConnections.begin(), thisModuleConnections.end());
84 
85  // Unique
86  thisModuleConnections.erase(std::unique(thisModuleConnections.begin(), thisModuleConnections.end()),
87  thisModuleConnections.end());
88  }
89 }
std::map< unsigned int, std::vector< unsigned int > > moduleConnections_
def unique(seq, keepstr=True)
Definition: tier0.py:24
ii
Definition: cuy.py:589

◆ getConnectedModuleDetIds()

const std::vector< unsigned int > & lst::ModuleConnectionMap::getConnectedModuleDetIds ( unsigned int  detid) const

Definition at line 103 of file ModuleConnectionMap.cc.

References ALCARECOPPSCalTrackBasedSel_cff::detid.

Referenced by lst::fillConnectedModuleArrayExplicit().

103  {
104  static const std::vector<unsigned int> dummy;
105  auto const mList = moduleConnections_.find(detid);
106  return mList != moduleConnections_.end() ? mList->second : dummy;
107 }
std::map< unsigned int, std::vector< unsigned int > > moduleConnections_

◆ load()

void lst::ModuleConnectionMap::load ( std::string const &  filename)

Definition at line 12 of file ModuleConnectionMap.cc.

References ALCARECOPPSCalTrackBasedSel_cff::detid, corrVsCorr::filename, mps_fire::i, compare_using_db::ifile, and eostools::move().

12  {
13  moduleConnections_.clear();
14 
15  std::ifstream ifile(filename, std::ios::binary);
16  if (!ifile.is_open()) {
17  throw std::runtime_error("Unable to open file: " + filename);
18  }
19 
20  while (!ifile.eof()) {
21  unsigned int detid, number_of_connections;
22 
23  // Read the detid and the number of connections from the binary file
24  ifile.read(reinterpret_cast<char*>(&detid), sizeof(detid));
25  ifile.read(reinterpret_cast<char*>(&number_of_connections), sizeof(number_of_connections));
26 
27  if (ifile) {
28  std::vector<unsigned int> connected_detids;
29  connected_detids.reserve(number_of_connections);
30 
31  // Read the connections for the given detid
32  for (unsigned int i = 0; i < number_of_connections; ++i) {
33  unsigned int connected_detid;
34  ifile.read(reinterpret_cast<char*>(&connected_detid), sizeof(connected_detid));
35  if (ifile) {
36  connected_detids.push_back(connected_detid);
37  } else {
38  if (!ifile.eof()) {
39  throw std::runtime_error("Failed to read connection data.");
40  }
41  break; // Exit loop on read failure that's not EOF
42  }
43  }
44 
45  if (ifile) {
46  moduleConnections_[detid] = std::move(connected_detids);
47  }
48  } else {
49  if (!ifile.eof()) {
50  throw std::runtime_error("Failed to read module connection binary data.");
51  }
52  }
53  }
54 }
std::map< unsigned int, std::vector< unsigned int > > moduleConnections_
def move(src, dest)
Definition: eostools.py:511

◆ print()

void lst::ModuleConnectionMap::print ( void  )

Definition at line 91 of file ModuleConnectionMap.cc.

References gather_cfg::cout, and ALCARECOPPSCalTrackBasedSel_cff::detid.

91  {
92  std::cout << "Printing ModuleConnectionMap" << std::endl;
93  for (auto& pair : moduleConnections_) {
94  unsigned int detid = pair.first;
95  std::vector<unsigned int> const& connected_detids = pair.second;
96  std::cout << " detid: " << detid << std::endl;
97  for (auto& connected_detid : connected_detids) {
98  std::cout << " connected_detid: " << connected_detid << std::endl;
99  }
100  }
101 }
std::map< unsigned int, std::vector< unsigned int > > moduleConnections_

◆ size()

int lst::ModuleConnectionMap::size ( void  ) const

Definition at line 108 of file ModuleConnectionMap.cc.

Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().

108 { return moduleConnections_.size(); }
std::map< unsigned int, std::vector< unsigned int > > moduleConnections_

Member Data Documentation

◆ moduleConnections_

std::map<unsigned int, std::vector<unsigned int> > lst::ModuleConnectionMap::moduleConnections_
private

Definition at line 12 of file ModuleConnectionMap.h.