CMS 3D CMS Logo

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

Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses, DCU id... More...

#include <SiStripFedCabling.h>

Classes

class  ConnsRange
 Builds range of iterators from pair of offsets. More...
 

Public Types

typedef std::vector
< FedChannelConnection
Conns
 
typedef Conns::const_iterator ConnsConstIter
 
typedef boost::iterator_range
< ConnsConstIter
ConnsConstIterRange
 
typedef Conns::iterator ConnsIter
 
typedef boost::iterator_range
< ConnsIter
ConnsIterRange
 
typedef std::pair< uint32_t,
uint32_t > 
ConnsPair
 
typedef std::vector< uint16_t > Feds
 
typedef Feds::const_iterator FedsConstIter
 
typedef boost::iterator_range
< FedsConstIter
FedsConstIterRange
 
typedef Feds::iterator FedsIter
 
typedef boost::iterator_range
< FedsIter
FedsIterRange
 
typedef std::vector< ConnsPairRegistry
 

Public Member Functions

void buildFedCabling (const std::vector< FedChannelConnection > &)
 
void buildFedCabling (ConnsConstIterRange connections)
 
const FedChannelConnectionconnection (uint16_t fed_id, uint16_t fed_ch) const
 
const std::vector
< FedChannelConnection > & 
connections (uint16_t fed_id) const
 
const std::vector
< FedChannelConnection > & 
detected () const
 
ConnsConstIterRange detectedDevices () const
 
FedChannelConnection fedConnection (uint16_t fed_id, uint16_t fed_ch) const
 
ConnsConstIterRange fedConnections (uint16_t fed_id) const
 
FedsConstIterRange fedIds () const
 
const std::vector< uint16_t > & feds () const
 
void print (std::stringstream &ss) const
 LEFT FOR COMPATIBILITY. SHOULD BE REPLACED BY PRINTDEBUG. More...
 
void printDebug (std::stringstream &) const
 
void printSummary (std::stringstream &) const
 
ConnsRange range (ConnsPair) const
 Builds range of iterators from pair of offsets. More...
 
 SiStripFedCabling (const std::vector< FedChannelConnection > &)
 
 SiStripFedCabling (ConnsConstIterRange)
 
 SiStripFedCabling (const SiStripFedCabling &)
 
 SiStripFedCabling ()
 
void summary (std::stringstream &ss) const
 LEFT FOR COMPATIBILITY. SHOULD BE REPLACED BY PRINTSUMMARY. More...
 
void terse (std::stringstream &) const
 
const std::vector
< FedChannelConnection > & 
undetected () const
 
ConnsConstIterRange undetectedDevices () const
 
 ~SiStripFedCabling ()
 

Private Attributes

Conns connections_
 Container of connection objects. More...
 
Conns detected_
 Connections to FE devices that are not detected. More...
 
Feds feds_
 "Active" FEDs that have connected FE devices More...
 
Registry registry_
 Container of "ranges" indexed by FED id. More...
 
Conns undetected_
 FE devices that are detected. More...
 

Detailed Description

Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses, DCU id...

Definition at line 332 of file SiStripFedCabling.h.

Member Typedef Documentation

Definition at line 348 of file SiStripFedCabling.h.

typedef Conns::const_iterator SiStripFedCabling::ConnsConstIter

Definition at line 352 of file SiStripFedCabling.h.

Definition at line 356 of file SiStripFedCabling.h.

typedef Conns::iterator SiStripFedCabling::ConnsIter

Definition at line 350 of file SiStripFedCabling.h.

typedef boost::iterator_range<ConnsIter> SiStripFedCabling::ConnsIterRange

Definition at line 354 of file SiStripFedCabling.h.

typedef std::pair<uint32_t,uint32_t> SiStripFedCabling::ConnsPair

Definition at line 358 of file SiStripFedCabling.h.

typedef std::vector<uint16_t> SiStripFedCabling::Feds

Definition at line 338 of file SiStripFedCabling.h.

typedef Feds::const_iterator SiStripFedCabling::FedsConstIter

Definition at line 342 of file SiStripFedCabling.h.

typedef boost::iterator_range<FedsConstIter> SiStripFedCabling::FedsConstIterRange

Definition at line 346 of file SiStripFedCabling.h.

typedef Feds::iterator SiStripFedCabling::FedsIter

Definition at line 340 of file SiStripFedCabling.h.

typedef boost::iterator_range<FedsIter> SiStripFedCabling::FedsIterRange

Definition at line 344 of file SiStripFedCabling.h.

typedef std::vector<ConnsPair> SiStripFedCabling::Registry

Definition at line 360 of file SiStripFedCabling.h.

Constructor & Destructor Documentation

SiStripFedCabling::SiStripFedCabling ( const std::vector< FedChannelConnection > &  input)

TO BE DEPRECATED! TO BE DEPRECATED! TO BE DEPRECATED!

Definition at line 18 of file SiStripFedCabling.cc.

References buildFedCabling(), LogTrace, and sistrip::mlCabling_.

19  : feds_(),
20  connected_(),
21  detected_(),
22  undetected_()
23 {
25  << "[SiStripFedCabling::" << __func__ << "]"
26  << " Constructing object...";
28 }
Feds feds_
&quot;Active&quot; FEDs that have connected FE devices
Conns undetected_
FE devices that are detected.
static const char mlCabling_[]
void buildFedCabling(const std::vector< FedChannelConnection > &)
Conns detected_
Connections to FE devices that are not detected.
#define LogTrace(id)
tuple input
Definition: collect_tpl.py:10
SiStripFedCabling::SiStripFedCabling ( ConnsConstIterRange  )

Constructor taking FED channel connection objects as input.

SiStripFedCabling::SiStripFedCabling ( const SiStripFedCabling input)

Copy constructor.

Definition at line 32 of file SiStripFedCabling.cc.

References buildFedCabling(), connections(), feds(), LogTrace, and sistrip::mlCabling_.

33  : feds_(),
34  connected_(),
35  detected_(),
36  undetected_()
37 {
39  << "[SiStripFedCabling::" << __func__ << "]"
40  << " Constructing object...";
41 
42  std::vector<FedChannelConnection> v_fcc;
43 
44  // Retrieve FED ids from cabling map and iterate through
45  const std::vector<uint16_t>& fedids = input.feds();
46  std::vector<uint16_t>::const_iterator ifed=fedids.begin();
47  for ( ; ifed != fedids.end(); ++ifed ) {
48  //copy the vector of FedChannelConnection for the given ifed
49  v_fcc.insert(v_fcc.end(),input.connections(*ifed).begin(),input.connections(*ifed).end());
50  }
51 
52  buildFedCabling( v_fcc );
53 
54 }
const std::vector< uint16_t > & feds() const
Feds feds_
&quot;Active&quot; FEDs that have connected FE devices
Conns undetected_
FE devices that are detected.
static const char mlCabling_[]
void buildFedCabling(const std::vector< FedChannelConnection > &)
Conns detected_
Connections to FE devices that are not detected.
#define LogTrace(id)
const std::vector< FedChannelConnection > & connections(uint16_t fed_id) const
SiStripFedCabling::SiStripFedCabling ( )

Public default constructor.

Definition at line 58 of file SiStripFedCabling.cc.

References LogTrace, and sistrip::mlCabling_.

59  : feds_(),
60  connected_(),
61  detected_(),
62  undetected_()
63 {
65  << "[SiStripFedCabling::" << __func__ << "]"
66  << " Constructing object...";
67 }
Feds feds_
&quot;Active&quot; FEDs that have connected FE devices
Conns undetected_
FE devices that are detected.
static const char mlCabling_[]
Conns detected_
Connections to FE devices that are not detected.
#define LogTrace(id)
SiStripFedCabling::~SiStripFedCabling ( )

Default destructor.

Definition at line 71 of file SiStripFedCabling.cc.

References LogTrace, and sistrip::mlCabling_.

71  {
73  << "[SiStripFedCabling::" << __func__ << "]"
74  << " Destructing object...";
75 }
static const char mlCabling_[]
#define LogTrace(id)

Member Function Documentation

void SiStripFedCabling::buildFedCabling ( const std::vector< FedChannelConnection > &  input)

TO BE DEPRECATED! TO BE DEPRECATED! TO BE DEPRECATED!

Definition at line 79 of file SiStripFedCabling.cc.

References sistrip::CMS_FED_ID_MAX, detected(), detected_, sistrip::FEDCH_PER_FED, feds_, spr::find(), edm::isDebugEnabled(), LogTrace, sistrip::mlCabling_, findQualityFiles::size, and undetected_.

Referenced by SiStripFedCablingBuilderFromDb::getFedCabling(), and SiStripFedCabling().

79  {
80 
81  // Check input
82  if ( input.empty() ) {
84  << "[SiStripFedCabling::" << __func__ << "]"
85  << " Input vector of FedChannelConnections is of zero size!"
86  << " Unable to populate FED cabling object!";
87  return;
88  }
89 
90  std::stringstream ss;
91  ss << "[SiStripFedCabling::" << __func__ << "]"
92  << " Building FED cabling from "
93  << input.size()
94  << " connections...";
95  LogTrace(mlCabling_) << ss.str();
96 
97  // Clear containers
98  connected_.clear();
99  detected_.clear();
100  undetected_.clear();
101 
102  // Iterate through FEDs
103  for ( uint16_t iconn = 0; iconn < input.size(); iconn++ ) {
104 
105  if ( !input[iconn].isConnected() ) { continue; }
106 
107  uint16_t fed_id = input[iconn].fedId();
108  uint16_t fed_ch = input[iconn].fedCh();
109 
110  // Check on FED ids and channels
111  if ( fed_id > sistrip::CMS_FED_ID_MAX ) {
112  if ( edm::isDebugEnabled() ) {
114  << "[SiStripFedCabling::" << __func__ << "]"
115  << " Unexpected FED id! " << fed_id;
116  }
117  continue;
118  }
119  if ( fed_ch >= sistrip::FEDCH_PER_FED ) {
120  if ( edm::isDebugEnabled() ) {
122  << "[SiStripFedCabling::" << __func__ << "]"
123  << " Unexpected FED channel! " << fed_ch;
124  }
125  continue;
126  }
127 
128  // Resize container to accommodate all FED channels
129  if ( connected_.size() <= fed_id ) { connected_.resize(fed_id+1); }
130  if ( connected_[fed_id].size() != 96 ) { connected_[fed_id].resize(96); }
131 
132  // Fill appropriate container
133  bool detected = input[iconn].i2cAddr(0) || input[iconn].i2cAddr(1);
134  bool connected = input[iconn].fedId(); //@@ should check also FeUnit/FeChan are not invalid ???
135  if ( detected && connected ) {
136  connected_[fed_id][fed_ch] = input[iconn];
137  } else if ( detected && !connected ) {
138  detected_.push_back( input[iconn] );
139  } else if ( !detected && !connected ) {
140  undetected_.push_back( input[iconn] );
141  }
142 
143  if ( detected && connected ) {
144  std::vector<uint16_t>::iterator id = find( feds_.begin(), feds_.end(), fed_id );
145  if ( id == feds_.end() ) { feds_.push_back( fed_id ); }
146  }
147 
148  }
149 
150 }
bool isDebugEnabled()
Feds feds_
&quot;Active&quot; FEDs that have connected FE devices
static const uint16_t CMS_FED_ID_MAX
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
Conns undetected_
FE devices that are detected.
static const char mlCabling_[]
Conns detected_
Connections to FE devices that are not detected.
#define LogTrace(id)
tuple input
Definition: collect_tpl.py:10
const std::vector< FedChannelConnection > & detected() const
static const uint16_t FEDCH_PER_FED
tuple size
Write out results.
void SiStripFedCabling::buildFedCabling ( ConnsConstIterRange  connections)

Builds FED cabling from vector of FED connections.

const FedChannelConnection & SiStripFedCabling::connection ( uint16_t  fed_id,
uint16_t  fed_ch 
) const

TO BE DEPRECATED! TO BE DEPRECATED! TO BE DEPRECATED!

Definition at line 160 of file SiStripFedCabling.cc.

References relativeConstraints::empty, edm::isDebugEnabled(), sistrip::mlCabling_, and findQualityFiles::size.

Referenced by CommissioningHistosUsingDb::addDcuDetIds(), SiStripSpyMonitorModule::analyze(), SiStripCMMonitorPlugin::analyze(), SiStripShotFilter::filter(), sistrip::FEDEmulatorModule::produce(), SiStripFEDErrorsDQM::readHistogram(), PedsOnlyHistosUsingDb::update(), NoiseHistosUsingDb::update(), PedestalsHistosUsingDb::update(), PedsFullNoiseHistosUsingDb::update(), and ApvTimingHistosUsingDb::update().

161  {
162 
163  //@@ should use connections(fed_id) method here!!!
164 
165  if ( !connected_.empty() ) {
166  if ( fed_id < connected_.size() ) {
167  if ( !connected_[fed_id].empty() ) {
168  if ( fed_chan < connected_[fed_id].size() ) {
169  return connected_[fed_id][fed_chan];
170  } else {
171  if ( edm::isDebugEnabled() ) {
173  << "[SiStripFedCabling::" << __func__ << "]"
174  << " FED channel (" << fed_chan
175  << ") is greater than or equal to vector size ("
176  << connected_[fed_chan].size() << ")!";
177  }
178  }
179  } else {
180  if ( edm::isDebugEnabled() ) {
182  << "[SiStripFedCabling::" << __func__ << "]"
183  << " Cabling map is empty for FED id "
184  << fed_id;
185  }
186  }
187  } else {
188  if ( edm::isDebugEnabled() ) {
190  << "[SiStripFedCabling::" << __func__ << "]"
191  << " FED id (" << fed_id
192  << ") is greater than or equal to vector size ("
193  << connected_.size() << ")!";
194  }
195  }
196  } else {
198  << "[SiStripFedCabling::" << __func__ << "]"
199  << " Cabling map is empty!";
200  }
201 
202  static FedChannelConnection conn;
203  return conn;
204 
205 }
bool isDebugEnabled()
static const char mlCabling_[]
Class containning control, module, detector and connection information, at the level of a FED channel...
tuple size
Write out results.
const std::vector< FedChannelConnection > & SiStripFedCabling::connections ( uint16_t  fed_id) const

TO BE DEPRECATED! TO BE DEPRECATED! TO BE DEPRECATED!

Definition at line 209 of file SiStripFedCabling.cc.

References relativeConstraints::empty, edm::isDebugEnabled(), and sistrip::mlCabling_.

Referenced by SiStripFecCabling::buildFecCabling(), ViewTranslator::buildMaps(), FineDelayHistosUsingDb::computeDelays(), sistrip::SpyUnpacker::createDigis(), sistrip::RawToDigiUnpacker::createDigis(), SiStripCommissioningSource::createTasks(), SiStripCommissioningSource::endJob(), SiStripCommissioningSource::fillHistos(), LaserAlignmentEventFilter::filter(), SiStripFedCablingManipulator::manipulate(), sistrip::SpyDigiConverter::mergeModuleChannels(), sistrip::ExcludedFEDListProducer::produce(), SiStripFEDErrorsDQM::readBadAPVs(), SiStripDetCabling::SiStripDetCabling(), SiStripFedCabling(), terse(), SiStripQuality::turnOffFeds(), LatencyHistosUsingDb::update(), and FineDelayHistosUsingDb::update().

209  {
210 
211  if ( !connected_.empty() ) {
212  if ( fed_id < connected_.size() ) {
213  if ( !connected_[fed_id].empty() ) {
214  return connected_[fed_id];
215  } else {
216  if ( edm::isDebugEnabled() ) {
218  << "[SiStripFedCabling::" << __func__ << "]"
219  << " Cabling map is empty for FED id "
220  << fed_id;
221  }
222  }
223  } else {
224  if ( edm::isDebugEnabled() ) {
226  << "[SiStripFedCabling::" << __func__ << "]"
227  << " FED id (" << fed_id
228  << ") is greater than or equal to vector size ("
229  << connected_.size() << ")!";
230  }
231  }
232  } else {
234  << "[SiStripFedCabling::" << __func__ << "]"
235  << " Cabling map is empty!";
236  }
237 
238  static FedChannelConnection conn;
239  static std::vector<FedChannelConnection> connections(96,conn);
240  return connections;
241 
242 }
bool isDebugEnabled()
static const char mlCabling_[]
Class containning control, module, detector and connection information, at the level of a FED channel...
const std::vector< FedChannelConnection > & connections(uint16_t fed_id) const
const std::vector<FedChannelConnection>& SiStripFedCabling::detected ( ) const

TO BE DEPRECATED! TO BE DEPRECATED! TO BE DEPRECATED!

Referenced by buildFedCabling(), and SiStripDetCabling::SiStripDetCabling().

SiStripFedCabling::ConnsConstIterRange SiStripFedCabling::detectedDevices ( ) const
inline

Returns information for "detected, but unconnected" devices.

Definition at line 498 of file SiStripFedCabling.h.

References detected_.

498  {
499  return ConnsConstIterRange( detected_.begin(), detected_.end() );
500 }
boost::iterator_range< ConnsConstIter > ConnsConstIterRange
Conns detected_
Connections to FE devices that are not detected.
FedChannelConnection SiStripFedCabling::fedConnection ( uint16_t  fed_id,
uint16_t  fed_ch 
) const

Returns connection object for a given FED id and channel.

ConnsConstIterRange SiStripFedCabling::fedConnections ( uint16_t  fed_id) const

Returns all connection objects for a given FED id.

SiStripFedCabling::FedsConstIterRange SiStripFedCabling::fedIds ( ) const
inline

Retrieve vector of active FED ids.

Definition at line 494 of file SiStripFedCabling.h.

References feds_.

494  {
495  return FedsConstIterRange( feds_.begin(), feds_.end() );
496 }
Feds feds_
&quot;Active&quot; FEDs that have connected FE devices
boost::iterator_range< FedsConstIter > FedsConstIterRange
const std::vector< uint16_t > & SiStripFedCabling::feds ( ) const
void SiStripFedCabling::print ( std::stringstream &  ss) const
inline

LEFT FOR COMPATIBILITY. SHOULD BE REPLACED BY PRINTDEBUG.

Definition at line 425 of file SiStripFedCabling.h.

References printDebug().

Referenced by operator<<().

425  {
426  printDebug(ss);
427  }
void printDebug(std::stringstream &) const
void SiStripFedCabling::printDebug ( std::stringstream &  ) const

Prints all connection information for this FED cabling object.

Referenced by print().

void SiStripFedCabling::printSummary ( std::stringstream &  ) const

Prints summary information for this FED cabling object.

Referenced by summary().

SiStripFedCabling::ConnsRange SiStripFedCabling::range ( SiStripFedCabling::ConnsPair  p) const
inline

Builds range of iterators from pair of offsets.

Definition at line 542 of file SiStripFedCabling.h.

References connections_.

542  {
543  return ConnsRange( connections_, p );
544 }
Conns connections_
Container of connection objects.
void SiStripFedCabling::summary ( std::stringstream &  ss) const
inline

LEFT FOR COMPATIBILITY. SHOULD BE REPLACED BY PRINTSUMMARY.

Definition at line 435 of file SiStripFedCabling.h.

References printSummary().

Referenced by CommissioningHistosUsingDb::CommissioningHistosUsingDb(), and sistrip::RawToDigiModule::updateCabling().

435  {
436  printSummary(ss);
437  }
void printSummary(std::stringstream &) const
void SiStripFedCabling::terse ( std::stringstream &  ss) const

Prints terse information for this FED cabling object.

Definition at line 318 of file SiStripFedCabling.cc.

References connections(), relativeConstraints::empty, feds(), and sistrip::valid_.

Referenced by CommissioningHistosUsingDb::CommissioningHistosUsingDb(), and sistrip::RawToDigiModule::updateCabling().

318  {
319 
320  ss << "[SiStripFedCabling::" << __func__ << "]";
321 
322  const std::vector<uint16_t>& fed_ids = feds();
323  if ( feds().empty() ) {
324  ss << " No FEDs found! Unable to print cabling map!";
325  return;
326  }
327 
328  ss << " Printing cabling map for " << fed_ids.size()
329  << " FEDs: " << std::endl << std::endl;
330 
331  std::vector<uint16_t>::const_iterator ifed = fed_ids.begin();
332  for ( ; ifed != fed_ids.end(); ifed++ ) {
333 
334  const std::vector<FedChannelConnection>& conns = connections(*ifed);
335 
336  ss << " Printing cabling information for FED id " << *ifed
337  << " (found " << conns.size()
338  << " FedChannelConnection objects...)"
339  << std::endl;
340 
341  uint16_t connected = 0;
342  std::vector<FedChannelConnection>::const_iterator iconn = conns.begin();
343  for ( ; iconn != conns.end(); iconn++ ) {
344  if ( iconn->fedId() < sistrip::valid_ ) {
345  connected++;
346  iconn->terse(ss);
347  ss << std::endl;
348  }
349  }
350 
351  ss << " Found " << connected
352  << " connected channels for FED id " << *ifed << std::endl
353  << std::endl;
354 
355  }
356 
357 }
const std::vector< uint16_t > & feds() const
static const uint16_t valid_
Definition: Constants.h:18
const std::vector< FedChannelConnection > & connections(uint16_t fed_id) const
const std::vector<FedChannelConnection>& SiStripFedCabling::undetected ( ) const

TO BE DEPRECATED! TO BE DEPRECATED! TO BE DEPRECATED!

Referenced by SiStripDetCabling::SiStripDetCabling().

SiStripFedCabling::ConnsConstIterRange SiStripFedCabling::undetectedDevices ( ) const
inline

Returns information for all "undetected" devices.

Definition at line 502 of file SiStripFedCabling.h.

References undetected_.

502  {
503  return ConnsConstIterRange( undetected_.begin(), undetected_.end() );
504 }
Conns undetected_
FE devices that are detected.
boost::iterator_range< ConnsConstIter > ConnsConstIterRange

Member Data Documentation

Conns SiStripFedCabling::connections_
private

Container of connection objects.

Definition at line 482 of file SiStripFedCabling.h.

Referenced by range().

Conns SiStripFedCabling::detected_
private

Connections to FE devices that are not detected.

Definition at line 485 of file SiStripFedCabling.h.

Referenced by buildFedCabling(), and detectedDevices().

Feds SiStripFedCabling::feds_
private

"Active" FEDs that have connected FE devices

Definition at line 476 of file SiStripFedCabling.h.

Referenced by buildFedCabling(), fedIds(), and feds().

Registry SiStripFedCabling::registry_
private

Container of "ranges" indexed by FED id.

Definition at line 479 of file SiStripFedCabling.h.

Conns SiStripFedCabling::undetected_
private

FE devices that are detected.

Definition at line 488 of file SiStripFedCabling.h.

Referenced by buildFedCabling(), and undetectedDevices().