CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiStripDetCabling Class Reference

#include <CalibFormats/SiStripObjects/interface/SiStripDetCabling.h>

Public Member Functions

void addActiveDetectorsRawIds (std::vector< uint32_t > &) const
 
void addAllDetectorsRawIds (std::vector< uint32_t > &vector_to_fill_with_detids) const
 
void addConnected (std::map< uint32_t, std::vector< int > > &) const
 
void addDetected (std::map< uint32_t, std::vector< int > > &) const
 
void addDevices (const FedChannelConnection &, std::map< uint32_t, std::vector< const FedChannelConnection * > > &)
 
void addDevices (const FedChannelConnection &)
 
void addNotConnectedAPVs (std::map< uint32_t, std::vector< int > > &) const
 
void addUnDetected (std::map< uint32_t, std::vector< int > > &) const
 
std::map< uint32_t, std::vector< int > > const & connected () const
 
uint32_t connectedNumber (const std::string &subDet, const uint16_t layer) const
 
uint32_t detectedNumber (const std::string &subDet, const uint16_t layer) const
 
const SiStripFedCablingfedCabling () const
 
void getActiveDetectorsContiguousIds (std::map< uint32_t, unsigned int > &) const
 
void getAllDetectorsContiguousIds (std::map< uint32_t, unsigned int > &) const
 
const FedChannelConnectiongetConnection (uint32_t det_id, unsigned short apv_pair) const
 
const std::vector< const FedChannelConnection * > & getConnections (uint32_t det_id) const
 
const unsigned int getDcuId (uint32_t det_id) const
 
const std::map< uint32_t, std::vector< const FedChannelConnection * > > & getDetCabling () const
 
bool IsConnected (const uint32_t &det_id) const
 
bool IsDetected (const uint32_t &det_id) const
 
bool IsUndetected (const uint32_t &det_id) const
 
const uint16_t nApvPairs (uint32_t det_id) const
 
const SiStripDetCablingoperator= (const SiStripDetCabling &)=delete
 
void print (std::stringstream &) const
 
void printDebug (std::stringstream &ss, const TrackerTopology *trackerTopo) const
 
void printSummary (std::stringstream &ss, const TrackerTopology *trackerTopo) const
 
 SiStripDetCabling (const TrackerTopology *const topology)
 
 SiStripDetCabling (const SiStripFedCabling &, const TrackerTopology *const topology)
 
 SiStripDetCabling (const SiStripDetCabling &)=delete
 
const TrackerTopology *const trackerTopology () const
 
uint32_t undetectedNumber (const std::string &subDet, const uint16_t layer) const
 
virtual ~SiStripDetCabling ()
 

Private Member Functions

void addFromSpecificConnection (std::map< uint32_t, std::vector< int > > &, const std::map< uint32_t, std::vector< int > > &, std::map< int16_t, uint32_t > *connectionsToFill=nullptr) const
 
uint32_t detNumber (const std::string &subDet, const uint16_t layer, const int connectionType) const
 Return the number of modules for the specified subDet, layer and connectionType. More...
 
bool IsInMap (const uint32_t &det_id, const std::map< uint32_t, std::vector< int > > &) const
 
int16_t layerSearch (const uint32_t detId) const
 

Private Attributes

std::map< uint32_t, std::vector< int > > connected_
 
std::map< int16_t, uint32_t > connectionCount [3]
 
std::map< uint32_t, std::vector< int > > detected_
 
const SiStripFedCablingfedCabling_
 
std::map< uint32_t, std::vector< const FedChannelConnection * > > fullcabling_
 
const TrackerTopology *const tTopo
 
std::map< uint32_t, std::vector< int > > undetected_
 

Detailed Description

Description: give detector view of the cabling of the silicon strip tracker

Definition at line 20 of file SiStripDetCabling.h.

Constructor & Destructor Documentation

SiStripDetCabling::SiStripDetCabling ( const TrackerTopology *const  topology)

Definition at line 14 of file SiStripDetCabling.cc.

14 : fedCabling_(nullptr), tTopo(topology) {}
const SiStripFedCabling * fedCabling_
const TrackerTopology *const tTopo
SiStripDetCabling::~SiStripDetCabling ( )
virtual

Definition at line 15 of file SiStripDetCabling.cc.

15 {}
SiStripDetCabling::SiStripDetCabling ( const SiStripFedCabling fedcabling,
const TrackerTopology *const  topology 
)

Definition at line 18 of file SiStripDetCabling.cc.

References addDevices(), addFromSpecificConnection(), connected_, connectionCount, detected_, SiStripFedCabling::detectedDevices(), SiStripFedCabling::fedConnections(), SiStripFedCabling::fedIds(), fullcabling_, sistrip::invalid32_, sistrip::invalid_, undetected_, and SiStripFedCabling::undetectedDevices().

18  : fullcabling_(), connected_(), detected_(), undetected_(), fedCabling_(&fedcabling), tTopo(topology)
19 {
20  // --- CONNECTED = have fedid and i2cAddr
21  // create fullcabling_, loop over vector of FedChannelConnection, either make new element of map, or add to appropriate vector of existing map element
22  // get feds list (vector) from fedcabling object - these are the active FEDs
23  auto feds = fedcabling.fedIds();
24  for ( auto ifed = feds.begin(); ifed != feds.end(); ifed++ ) { // iterate over active feds, get all their FedChannelConnection-s
25  SiStripFedCabling::ConnsConstIterRange conns = fedcabling.fedConnections( *ifed );
26  for ( auto iconn = conns.begin(); iconn != conns.end(); iconn++ ) { // loop over FedChannelConnection objects
27  addDevices(*iconn, fullcabling_); // leave separate method, in case you will need to add devices also after constructing
28  bool have_fed_id = iconn->fedId();
29  std::vector<int> vector_of_connected_apvs;
30  if(have_fed_id){ // these apvpairs are seen from the readout
31  // there can be at most 6 APVs on one DetId: 0,1,2,3,4,5
32  int which_apv_pair = iconn->apvPairNumber(); // APVPair (0,1) for 512 strips and (0,1,2) for 768 strips
33 
34  // patch needed to take into account invalid detids or apvPairs
35  if( iconn->detId()==0 ||
36  iconn->detId() == sistrip::invalid32_ ||
37  iconn->apvPairNumber() == sistrip::invalid_ ||
38  iconn->nApvPairs() == sistrip::invalid_ ) {
39  continue;
40  }
41 
42  if(iconn->i2cAddr(0)) vector_of_connected_apvs.push_back(2*which_apv_pair + 0); // first apv of the pair
43  if(iconn->i2cAddr(1)) vector_of_connected_apvs.push_back(2*which_apv_pair + 1); // second apv of the pair
44  }
45  if(!vector_of_connected_apvs.empty()){ // add only is smth. there, obviously
46  std::map<uint32_t, std::vector<int> > map_of_connected_apvs;
47  map_of_connected_apvs.insert(std::make_pair(iconn->detId(),vector_of_connected_apvs));
48  addFromSpecificConnection(connected_, map_of_connected_apvs, &(connectionCount[0]));
49  }
50  }
51  }
52  // --- DETECTED = do not have fedid but have i2cAddr
53  SiStripFedCabling::ConnsConstIterRange detected_fed_connections = fedcabling.detectedDevices();
54  for(std::vector<FedChannelConnection>::const_iterator idtct = detected_fed_connections.begin(); idtct != detected_fed_connections.end(); ++idtct){
55  addDevices(*idtct, fullcabling_);
56  bool have_fed_id = idtct->fedId();
57  std::vector<int> vector_of_detected_apvs;
58  if(! have_fed_id){
59  int which_apv_pair = idtct->apvPairNumber(); // APVPair (0,1) for 512 strips and (0,1,2) for 768 strips
60  if(idtct->i2cAddr(0)) vector_of_detected_apvs.push_back(2*which_apv_pair + 0); // first apv of the pair
61  if(idtct->i2cAddr(1)) vector_of_detected_apvs.push_back(2*which_apv_pair + 1); // second apv of the pair
62  }
63  if(!vector_of_detected_apvs.empty()){ // add only is smth. there, obviously
64  std::map<uint32_t,std::vector<int> > map_of_detected_apvs;
65  map_of_detected_apvs.insert(std::make_pair(idtct->detId(),vector_of_detected_apvs));
66  addFromSpecificConnection(detected_, map_of_detected_apvs, &(connectionCount[1]) );
67  }
68  }
69  // --- UNDETECTED = have neither fedid nor i2caddr
70  SiStripFedCabling::ConnsConstIterRange undetected_fed_connections = fedcabling.undetectedDevices();
71  for(std::vector<FedChannelConnection>::const_iterator iudtct = undetected_fed_connections.begin(); iudtct != undetected_fed_connections.end(); ++iudtct){
72  addDevices(*iudtct, fullcabling_);
73  bool have_fed_id = iudtct->fedId();
74  std::vector<int> vector_of_undetected_apvs;
75  if(! have_fed_id){
76  int which_apv_pair = iudtct->apvPairNumber(); // APVPair (0,1) for 512 strips and (0,1,2) for 768 strips
77  if(iudtct->i2cAddr(0)) vector_of_undetected_apvs.push_back(2*which_apv_pair + 0); // first apv of the pair
78  if(iudtct->i2cAddr(1)) vector_of_undetected_apvs.push_back(2*which_apv_pair + 1); // second apv of the pair
79  }
80  if(!vector_of_undetected_apvs.empty()){ // add only is smth. there, obviously
81  std::map<uint32_t, std::vector<int> > map_of_undetected_apvs;
82  map_of_undetected_apvs.insert(std::make_pair(iudtct->detId(),vector_of_undetected_apvs));
83  addFromSpecificConnection(undetected_, map_of_undetected_apvs, &(connectionCount[2]));
84  }
85  }
86 }
ConnsConstIterRange detectedDevices() const
std::map< uint32_t, std::vector< int > > connected_
static const uint32_t invalid32_
Definition: Constants.h:15
ConnsConstIterRange undetectedDevices() const
const SiStripFedCabling * fedCabling_
boost::iterator_range< ConnsConstIter > ConnsConstIterRange
void addFromSpecificConnection(std::map< uint32_t, std::vector< int > > &, const std::map< uint32_t, std::vector< int > > &, std::map< int16_t, uint32_t > *connectionsToFill=nullptr) const
std::map< uint32_t, std::vector< int > > detected_
FedsConstIterRange fedIds() const
std::map< uint32_t, std::vector< const FedChannelConnection * > > fullcabling_
static const uint16_t invalid_
Definition: Constants.h:16
std::map< int16_t, uint32_t > connectionCount[3]
ConnsConstIterRange fedConnections(uint16_t fed_id) const
const TrackerTopology *const tTopo
void addDevices(const FedChannelConnection &, std::map< uint32_t, std::vector< const FedChannelConnection * > > &)
std::map< uint32_t, std::vector< int > > undetected_
SiStripDetCabling::SiStripDetCabling ( const SiStripDetCabling )
delete

Member Function Documentation

void SiStripDetCabling::addActiveDetectorsRawIds ( std::vector< uint32_t > &  vector_to_fill_with_detids) const
void SiStripDetCabling::addAllDetectorsRawIds ( std::vector< uint32_t > &  vector_to_fill_with_detids) const

Definition at line 121 of file SiStripDetCabling.cc.

References connected_, detected_, genParticles_cff::map, and undetected_.

Referenced by getActiveDetectorsContiguousIds(), SiStripCablingDQM::getActiveDetIds(), getAllDetectorsContiguousIds(), and getDetCabling().

121  {
122  for(std::map< uint32_t, std::vector<int> >::const_iterator conn_it = connected_.begin(); conn_it!=connected_.end(); ++conn_it){
123  vector_to_fill_with_detids.push_back(conn_it->first);
124  }
125  for(std::map< uint32_t, std::vector<int> >::const_iterator conn_it = detected_.begin(); conn_it!=detected_.end(); ++conn_it){
126  vector_to_fill_with_detids.push_back(conn_it->first);
127  }
128  for(std::map< uint32_t, std::vector<int> >::const_iterator conn_it = undetected_.begin(); conn_it!=undetected_.end(); ++conn_it){
129  vector_to_fill_with_detids.push_back(conn_it->first);
130  }
131  // no elements added to vector_to_fill_with_detids is empty connected_, detected_.begin and undetected_.begin
132 }
std::map< uint32_t, std::vector< int > > connected_
std::map< uint32_t, std::vector< int > > detected_
std::map< uint32_t, std::vector< int > > undetected_
void SiStripDetCabling::addConnected ( std::map< uint32_t, std::vector< int > > &  map_to_add_to) const

Definition at line 190 of file SiStripDetCabling.cc.

References addFromSpecificConnection(), and connected_.

Referenced by getDetCabling(), SiStripDigitizer::initializeEvent(), and TrackerPSimHitSelector::select().

190  {
191  addFromSpecificConnection(map_to_add_to, connected_);
192 }
std::map< uint32_t, std::vector< int > > connected_
void addFromSpecificConnection(std::map< uint32_t, std::vector< int > > &, const std::map< uint32_t, std::vector< int > > &, std::map< int16_t, uint32_t > *connectionsToFill=nullptr) const
void SiStripDetCabling::addDetected ( std::map< uint32_t, std::vector< int > > &  map_to_add_to) const

Definition at line 195 of file SiStripDetCabling.cc.

References addFromSpecificConnection(), and detected_.

Referenced by getDetCabling().

195  {
196  addFromSpecificConnection(map_to_add_to, detected_);
197 }
void addFromSpecificConnection(std::map< uint32_t, std::vector< int > > &, const std::map< uint32_t, std::vector< int > > &, std::map< int16_t, uint32_t > *connectionsToFill=nullptr) const
std::map< uint32_t, std::vector< int > > detected_
void SiStripDetCabling::addDevices ( const FedChannelConnection conn,
std::map< uint32_t, std::vector< const FedChannelConnection * > > &  conns 
)

Definition at line 89 of file SiStripDetCabling.cc.

References FedChannelConnection::apvPairNumber(), FedChannelConnection::detId(), FedChannelConnection::fedId(), sistrip::invalid32_, and sistrip::invalid_.

Referenced by addDevices(), and SiStripDetCabling().

90  {
91  if( conn.detId() && conn.detId() != sistrip::invalid32_ && // check for valid detid
92  conn.apvPairNumber() != sistrip::invalid_ ) { // check for valid apv pair number
93  if( conn.fedId()==0 || conn.fedId()==sistrip::invalid_ ){
94  edm::LogInfo("") << " SiStripDetCabling::addDevices for connection associated to detid " << conn.detId() << " apvPairNumber " << conn.apvPairNumber() << "the fedId is " << conn.fedId();
95  return;
96  }
97  // check cached vector size is sufficient
98  // if not, resize
99  if( conn.apvPairNumber() >= conns[conn.detId()].size() ) {
100  conns[conn.detId()].resize( conn.apvPairNumber()+1 );
101  }
102  // add latest connection object
103  conns[conn.detId()][conn.apvPairNumber()] = &conn;
104  }
105 }
static const uint32_t invalid32_
Definition: Constants.h:15
uint16_t apvPairNumber() const
const uint16_t & fedId() const
const uint32_t & detId() const
static const uint16_t invalid_
Definition: Constants.h:16
void SiStripDetCabling::addDevices ( const FedChannelConnection conn)

Definition at line 108 of file SiStripDetCabling.cc.

References addDevices(), and fullcabling_.

108  { // by default add to fullcabling_ connections - special case of above class
109  addDevices(conn, fullcabling_ ); // add to fullcabling_
110 }
std::map< uint32_t, std::vector< const FedChannelConnection * > > fullcabling_
void addDevices(const FedChannelConnection &, std::map< uint32_t, std::vector< const FedChannelConnection * > > &)
void SiStripDetCabling::addFromSpecificConnection ( std::map< uint32_t, std::vector< int > > &  map_to_add_to,
const std::map< uint32_t, std::vector< int > > &  specific_connection,
std::map< int16_t, uint32_t > *  connectionsToFill = nullptr 
) const
private

Definition at line 211 of file SiStripDetCabling.cc.

References layerSearch(), and genParticles_cff::map.

Referenced by addConnected(), addDetected(), addNotConnectedAPVs(), addUnDetected(), connected(), and SiStripDetCabling().

213  {
214  for(std::map< uint32_t, std::vector<int> >::const_iterator conn_it = specific_connection.begin(); conn_it!=specific_connection.end(); ++conn_it){
215  uint32_t new_detid = conn_it->first;
216  std::vector<int> new_apv_vector = conn_it->second;
217  std::map<uint32_t, std::vector<int> >::iterator it = map_to_add_to.find(new_detid);
218  if( it == map_to_add_to.end() ){ // detid does not exist in map, add new entry
219  std::sort(new_apv_vector.begin(),new_apv_vector.end()); // not very efficient sort, time consuming?
220  map_to_add_to.insert(std::make_pair(new_detid,new_apv_vector));
221 
222  // Count the number of detIds per layer. Doing it in this "if" we count each detId only once
223  // (otherwise it would be counted once per APV pair)
224  // ATTENTION: consider changing the loop content to avoid this
225  // This is the expected full number of modules (double sided are counted twice because the two
226  // sides have different detId).
227  // TIB1 : 336, TIB2 : 432, TIB3 : 540, TIB4 : 648
228  // TID : each disk has 48+48+40 (ring1+ring2+ring3)
229  // TOB1 : 504, TOB2 : 576, TOB3 : 648, TOB4 : 720, TOB5 : 792, TOB6 : 888
230  // TEC1 : Total number of modules = 6400.
231  if( connectionsToFill ) {
232  (*connectionsToFill)[layerSearch(new_detid)]++;
233  }
234 
235  }else{ // detid exists already, add to its vector - if its not there already . . .
236  std::vector<int> existing_apv_vector = it->second;
237  for(std::vector<int>::iterator inew = new_apv_vector.begin(); inew != new_apv_vector.end(); ++inew ){
238  bool there_already = false;
239  for(std::vector<int>::iterator iold = existing_apv_vector.begin(); iold != existing_apv_vector.end(); ++iold){
240  if (*iold == *inew){
241  there_already = true;
242  break; // leave the loop
243  }
244  }
245  if( ! there_already ){
246  existing_apv_vector.push_back(*inew);
247  std::sort(existing_apv_vector.begin(),existing_apv_vector.end()); // not very efficient sort, time consuming?
248  }else{
249  //edm::LogWarning("Logical") << "apv "<<*inew<<" already exists in the detector module "<<new_detid;
250  }
251  }
252  }
253  }
254 }
int16_t layerSearch(const uint32_t detId) const
void SiStripDetCabling::addNotConnectedAPVs ( std::map< uint32_t, std::vector< int > > &  map_to_add_to) const

Definition at line 205 of file SiStripDetCabling.cc.

References addFromSpecificConnection(), detected_, and undetected_.

Referenced by getDetCabling().

205  {
206  addFromSpecificConnection(map_to_add_to, detected_);
207  addFromSpecificConnection(map_to_add_to, undetected_);
208 }
void addFromSpecificConnection(std::map< uint32_t, std::vector< int > > &, const std::map< uint32_t, std::vector< int > > &, std::map< int16_t, uint32_t > *connectionsToFill=nullptr) const
std::map< uint32_t, std::vector< int > > detected_
std::map< uint32_t, std::vector< int > > undetected_
void SiStripDetCabling::addUnDetected ( std::map< uint32_t, std::vector< int > > &  map_to_add_to) const

Definition at line 200 of file SiStripDetCabling.cc.

References addFromSpecificConnection(), and undetected_.

Referenced by getDetCabling().

200  {
201  addFromSpecificConnection(map_to_add_to, undetected_);
202 }
void addFromSpecificConnection(std::map< uint32_t, std::vector< int > > &, const std::map< uint32_t, std::vector< int > > &, std::map< int16_t, uint32_t > *connectionsToFill=nullptr) const
std::map< uint32_t, std::vector< int > > undetected_
std::map< uint32_t, std::vector<int> > const& SiStripDetCabling::connected ( ) const
inline
uint32_t SiStripDetCabling::connectedNumber ( const std::string &  subDet,
const uint16_t  layer 
) const
inline

Definition at line 62 of file SiStripDetCabling.h.

References detNumber().

Referenced by SiStripCertificationInfo::fillSiStripCertificationMEs(), and SiStripQualityChecker::fillSubDetStatus().

62 { return detNumber(subDet, layer, 0); }
uint32_t detNumber(const std::string &subDet, const uint16_t layer, const int connectionType) const
Return the number of modules for the specified subDet, layer and connectionType.
uint32_t SiStripDetCabling::detectedNumber ( const std::string &  subDet,
const uint16_t  layer 
) const
inline

Definition at line 63 of file SiStripDetCabling.h.

References detNumber().

63 { return detNumber(subDet, layer, 1); }
uint32_t detNumber(const std::string &subDet, const uint16_t layer, const int connectionType) const
Return the number of modules for the specified subDet, layer and connectionType.
uint32_t SiStripDetCabling::detNumber ( const std::string &  subDet,
const uint16_t  layer,
const int  connectionType 
) const
private

Return the number of modules for the specified subDet, layer and connectionType.

Definition at line 275 of file SiStripDetCabling.cc.

References connectionCount, end, runEdmFileComparison::found, and LogDebug.

Referenced by connected(), connectedNumber(), detectedNumber(), and undetectedNumber().

275  {
276  uint16_t subDetLayer = layer;
277  // TIB = 1, TID = 2, TOB = 3, TEC = 4
278  if( subDet == "TID-" ) subDetLayer += 10;
279  else if( subDet == "TID+" ) subDetLayer += 10 + 3;
280  else if( subDet == "TOB" ) subDetLayer += 100;
281  else if( subDet == "TEC-" ) subDetLayer += 1000;
282  else if( subDet == "TEC+" ) subDetLayer += 1000 + 9;
283  else if( subDet != "TIB" ) {
284  LogDebug("SiStripDetCabling") << "Error: Wrong subDet. Please use one of TIB, TID, TOB, TEC." << std::endl;
285  return 0;
286  }
287  auto found = connectionCount[connectionType].find(subDetLayer);
288  if(found != connectionCount[connectionType].end()) {
289  return found->second;
290  }
291  return 0;
292 }
#define LogDebug(id)
#define end
Definition: vmac.h:39
std::map< int16_t, uint32_t > connectionCount[3]
const SiStripFedCabling* SiStripDetCabling::fedCabling ( ) const
inline
void SiStripDetCabling::getActiveDetectorsContiguousIds ( std::map< uint32_t, unsigned int > &  connectedToContiguous) const

Definition at line 306 of file SiStripDetCabling.cc.

References addAllDetectorsRawIds(), connected(), and getAllDetectorsContiguousIds().

Referenced by getDetCabling().

306  {
307  connectedToContiguous.clear(); // reset map
308  std::vector<uint32_t> connected; addAllDetectorsRawIds(connected); std::sort(connected.begin(), connected.end()); // get connected detids and sort them (not strictly necessary)
309  std::map<uint32_t, unsigned int> allToContiguous; getAllDetectorsContiguousIds(allToContiguous); // create map of all indices
310  for(std::vector<uint32_t>::const_iterator idet = connected.begin(); idet!= connected.end(); ++idet){ // select only the indices for active detectors
311  std::map<uint32_t, unsigned int>::iterator deco = allToContiguous.find(*idet);
312  if(deco!=allToContiguous.end()){
313  connectedToContiguous.insert(*deco);
314  }
315  }
316 }
void getAllDetectorsContiguousIds(std::map< uint32_t, unsigned int > &) const
std::map< uint32_t, std::vector< int > > const & connected() const
void addAllDetectorsRawIds(std::vector< uint32_t > &vector_to_fill_with_detids) const
void SiStripDetCabling::getAllDetectorsContiguousIds ( std::map< uint32_t, unsigned int > &  allToContiguous) const

Definition at line 295 of file SiStripDetCabling.cc.

References addAllDetectorsRawIds(), and Vispa.Plugins.EdmBrowser.EdmDataAccessor::all().

Referenced by getActiveDetectorsContiguousIds(), and getDetCabling().

295  {
296  allToContiguous.clear(); // reset map
297  std::vector<uint32_t> all; addAllDetectorsRawIds(all); std::sort(all.begin(), all.end()); // get all detids and sort them
298  unsigned int contiguousIndex = 0;
299  for(std::vector<uint32_t>::const_iterator idet = all.begin(); idet!= all.end(); ++idet){
300  ++contiguousIndex;
301  allToContiguous.insert(std::make_pair(*idet,contiguousIndex));
302  }
303 }
void addAllDetectorsRawIds(std::vector< uint32_t > &vector_to_fill_with_detids) const
const FedChannelConnection & SiStripDetCabling::getConnection ( uint32_t  det_id,
unsigned short  apv_pair 
) const

Definition at line 146 of file SiStripDetCabling.cc.

References getConnections().

Referenced by APVShotsAnalyzer::analyze(), APVShotsFilter::filter(), getDetCabling(), SiStripGainCosmicCalculator::getNewObject(), and ws_sso_content_reader.HTTPSClientAuthHandler::https_open().

146  {
147  const std::vector<const FedChannelConnection *>& fcconns = getConnections(det_id);
148  for(std::vector<const FedChannelConnection *>::const_iterator iconn = fcconns.begin(); iconn!=fcconns.end();++iconn){
149  if ( ((*iconn) != nullptr) && (((*iconn)->apvPairNumber()) == apv_pair) ) { // check if apvPairNumber() of present FedChannelConnection is the same as requested one
150  return (**iconn); // if yes, return the FedChannelConnection object
151  }
152  }
153  // if did not match none of the above, return some default value - DKwarn : also output message?
154  const static FedChannelConnection default_empty_fedchannelconnection;
155  return default_empty_fedchannelconnection;
156 }
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
Class containning control, module, detector and connection information, at the level of a FED channel...
const std::vector< const FedChannelConnection * > & SiStripDetCabling::getConnections ( uint32_t  det_id) const

Definition at line 135 of file SiStripDetCabling.cc.

References fullcabling_.

Referenced by SiStripQuality::addInvalidConnectionFromCabling(), SiStripMonitorDigi::analyze(), SiStripMonitorCluster::analyze(), SiStripMonitorRawData::analyze(), SiStripMonitorPedestals::analyze(), CommonModeAnalyzer::analyze(), APVShotsAnalyzer::analyze(), SiStripSpyDisplayModule::analyze(), SiStripCondObjBuilderFromDb::buildConnections(), SiStripMonitorTrack::fillControlViewHistos(), APVShotsFilter::filter(), SiStripCablingDQM::getActiveDetIds(), getConnection(), getDcuId(), getDetCabling(), SiStripTrackerMapCreator::getDetectorFlagAndComment(), nApvPairs(), and TrackerMap::TrackerMap().

135  { // return all connections corresponding to one det_id
136  std::map< uint32_t, std::vector<const FedChannelConnection *> >::const_iterator detcabl_it = fullcabling_.find(det_id); // has to be const_iterator because this function cannot change data members
137  if( ! (detcabl_it==fullcabling_.end()) ){ // found detid in fullcabling_
138  return ( detcabl_it->second );
139  }else{ // DKwarn : is there need for output message here telling det_id does not exist?
140  const static std::vector<const FedChannelConnection *> default_empty_fedchannelconnection;
141  return default_empty_fedchannelconnection;
142  }
143 }
std::map< uint32_t, std::vector< const FedChannelConnection * > > fullcabling_
const unsigned int SiStripDetCabling::getDcuId ( uint32_t  det_id) const

Definition at line 159 of file SiStripDetCabling.cc.

References getConnections(), mps_fire::i, and sistrip::invalid32_.

Referenced by getDetCabling().

159  {
160  const std::vector<const FedChannelConnection *>& fcconns = getConnections( det_id );
161  if(!fcconns.empty()) {
162  // patch needed to take into account the possibility that the first component of fcconns is invalid
163  for(size_t i=0;i<fcconns.size();++i)
164  if (fcconns.at(i) && fcconns.at(i)->detId() != sistrip::invalid32_ && fcconns.at(i)->detId() != 0 )
165  return ( fcconns.at(i) )->dcuId(); // get dcuId of first element - when you build check this consistency
166  }
167  // default if none of the above is fulfilled
168  unsigned int default_zero_value = 0;
169  return default_zero_value;
170 }
static const uint32_t invalid32_
Definition: Constants.h:15
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
const std::map< uint32_t, std::vector<const FedChannelConnection *> >& SiStripDetCabling::getDetCabling ( ) const
inline
bool SiStripDetCabling::IsConnected ( const uint32_t &  det_id) const

Definition at line 318 of file SiStripDetCabling.cc.

References connected_, and IsInMap().

Referenced by SiStripQuality::addNotConnectedConnectionFromCabling(), SiStripMonitorQuality::analyze(), SiStripMonitorQuality::bookHistograms(), getDetCabling(), SiStripQuality::IsModuleUsable(), and SiStripDcsInfo::readStatus().

318  {
319  return IsInMap(det_id,connected_);
320 }
std::map< uint32_t, std::vector< int > > connected_
bool IsInMap(const uint32_t &det_id, const std::map< uint32_t, std::vector< int > > &) const
bool SiStripDetCabling::IsDetected ( const uint32_t &  det_id) const

Definition at line 322 of file SiStripDetCabling.cc.

References detected_, and IsInMap().

Referenced by getDetCabling().

322  {
323  return IsInMap(det_id,detected_);
324 }
bool IsInMap(const uint32_t &det_id, const std::map< uint32_t, std::vector< int > > &) const
std::map< uint32_t, std::vector< int > > detected_
bool SiStripDetCabling::IsInMap ( const uint32_t &  det_id,
const std::map< uint32_t, std::vector< int > > &  map 
) const
private

Definition at line 328 of file SiStripDetCabling.cc.

References genParticles_cff::map.

Referenced by connected(), IsConnected(), IsDetected(), and IsUndetected().

328  {
329  std::map< uint32_t, std::vector<int> >::const_iterator it=map.find(det_id);
330  return (it!=map.end());
331 }
bool SiStripDetCabling::IsUndetected ( const uint32_t &  det_id) const

Definition at line 325 of file SiStripDetCabling.cc.

References IsInMap(), and undetected_.

Referenced by getDetCabling().

325  {
326  return IsInMap(det_id,undetected_);
327 }
bool IsInMap(const uint32_t &det_id, const std::map< uint32_t, std::vector< int > > &) const
std::map< uint32_t, std::vector< int > > undetected_
int16_t SiStripDetCabling::layerSearch ( const uint32_t  detId) const
private

Definition at line 256 of file SiStripDetCabling.cc.

References TrackerTopology::layer(), TrackerTopology::side(), DetId::subdetId(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, and tTopo.

Referenced by addFromSpecificConnection(), and connected().

257 {
258  const DetId detectorId=DetId(detId);
259  const int subdet = detectorId.subdetId();
260  if(subdet==StripSubdetector::TIB){
261  return tTopo->layer(detId);
262  } else if (subdet==StripSubdetector::TID){
263  // side: 1 = negative, 2 = positive
264  return 10+(tTopo->side(detId) -1)*3 + tTopo->layer(detId);
265  } else if (subdet==StripSubdetector::TOB){
266  return 100+tTopo->layer(detId);
267  } else if (subdet==StripSubdetector::TEC){
268  // side: 1 = negative, 2 = positive
269  return 1000+(tTopo->side(detId) -1)*9 +tTopo->layer(detId);
270  }
271  return 0;
272 }
unsigned int side(const DetId &id) const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
Definition: DetId.h:18
unsigned int layer(const DetId &id) const
const TrackerTopology *const tTopo
const uint16_t SiStripDetCabling::nApvPairs ( uint32_t  det_id) const

Definition at line 173 of file SiStripDetCabling.cc.

References getConnections(), mps_fire::i, and sistrip::invalid_.

Referenced by SiStripQuality::addInvalidConnectionFromCabling(), SiStripMonitorDigi::analyze(), SiStripMonitorCluster::analyze(), SiStripMonitorQuality::bookHistograms(), SiStripMonitorTrack::bookLayerMEs(), SiStripMonitorTrack::bookModMEs(), SiStripMonitorTrack::bookRingMEs(), SiStripMonitorPedestals::createMEs(), SiStripMonitorDigi::createModuleMEs(), SiStripMonitorCluster::createModuleMEs(), SiStripMonitorPedestals::fillCondDBMEs(), SiStripCablingDQM::getActiveDetIds(), and getDetCabling().

173  {
174  const std::vector<const FedChannelConnection *>& fcconns = getConnections( det_id );
175  if(!fcconns.empty()) {
176  // patch needed to take into account the possibility that the first component of fcconns is invalid
177  for(size_t i=0;i<fcconns.size();++i) {
178  if ( (fcconns.at(i) != nullptr) && (fcconns.at(i)->nApvPairs() != sistrip::invalid_) ) {
179  return fcconns.at(i)->nApvPairs(); // nr of apvpairs for associated module
180  }
181  }
182  }
183  // else {
184  // return 0;
185  // }
186  return 0;
187 }
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
static const uint16_t invalid_
Definition: Constants.h:16
const SiStripDetCabling& SiStripDetCabling::operator= ( const SiStripDetCabling )
delete
void SiStripDetCabling::print ( std::stringstream &  ss) const

Added missing print method.

Definition at line 335 of file SiStripDetCabling.cc.

References fullcabling_, cuy::ii, findQualityFiles::jj, and pileupDistInMC::total.

Referenced by SiStripFedCablingBuilder::beginRun(), SiStripFedCablingReader::beginRun(), getDetCabling(), and printDebug().

335  {
336  uint32_t valid = 0;
337  uint32_t total = 0;
338  typedef std::vector<const FedChannelConnection *> Conns;
339  typedef std::map<uint32_t,Conns> ConnsMap;
340  ConnsMap::const_iterator ii = fullcabling_.begin();
341  ConnsMap::const_iterator jj = fullcabling_.end();
342  ss << "[SiStripDetCabling::" << __func__ << "]"
343  << " Printing DET cabling for " << fullcabling_.size()
344  << " modules " << std::endl;
345  for ( ; ii != jj; ++ii ) {
346  ss << "Printing " << ii->second.size()
347  << " connections for DetId: " << ii->first << std::endl;
348  Conns::const_iterator iii = ii->second.begin();
349  Conns::const_iterator jjj = ii->second.end();
350  for ( ; iii != jjj; ++iii ) {
351  if ( (*iii)->isConnected() ) { valid++; }
352  total++;
353  ss << **iii << std::endl;
354  }
355  }
356  ss << "Number of connected: " << valid << std::endl
357  << "Number of connections: " << total << std::endl;
358 }
std::map< uint32_t, std::vector< const FedChannelConnection * > > fullcabling_
ii
Definition: cuy.py:590
void SiStripDetCabling::printDebug ( std::stringstream &  ss,
const TrackerTopology trackerTopo 
) const

The printDebug method returns all the connected/detected/undetected modules.

Definition at line 391 of file SiStripDetCabling.cc.

References print().

Referenced by getDetCabling().

391  {
392  print(ss);
393 }
void print(std::stringstream &) const
void SiStripDetCabling::printSummary ( std::stringstream &  ss,
const TrackerTopology trackerTopo 
) const

The printSummary method outputs the number of connected/detected/undetected modules for each layer of each subdetector.

Definition at line 360 of file SiStripDetCabling.cc.

References connectionCount.

Referenced by getDetCabling().

360  {
361  for( int connectionType = 0; connectionType < 3; ++connectionType ) {
362  if( connectionType == 0 ) ss << "Connected modules:" << std::endl;
363  else if( connectionType == 1 ) ss << "Detected modules:" << std::endl;
364  else ss << "Undetected modules:" << std::endl;
365  ss << "SubDet and layer\t modules" << std::endl;
366  std::map< int16_t, uint32_t >::const_iterator iter = connectionCount[connectionType].begin();
367  for( ; iter != connectionCount[connectionType].end(); ++iter ) {
368  uint32_t subDetLayer = iter->first;
369  uint32_t modules = iter->second;
370  if( int(subDetLayer/10) == 0 ) {
371  ss << "TIB \t layer " << subDetLayer << " \t" << modules << std::endl;
372  }
373  else if( int(subDetLayer/100) == 0 ) {
374  int layer = subDetLayer%10;
375  if( layer <= 3 ) ss << "TID- \t disk " << layer << "\t" << modules << std::endl;
376  else ss << "TID+ \t disk " << layer-3 << "\t" << modules << std::endl;
377  }
378  else if( int(subDetLayer/1000) == 0 ) {
379  int layer = subDetLayer%100;
380  ss << "TOB \t layer " << layer << " \t" << modules << std::endl;
381  }
382  else {
383  int layer = subDetLayer%100;
384  if( layer <= 9 ) ss << "TEC- \t disk " << layer << " \t" << modules << std::endl;
385  else ss << "TEC+ \t disk " << layer-9 << " \t" << modules << std::endl;
386  }
387  }
388  }
389 }
std::map< int16_t, uint32_t > connectionCount[3]
const TrackerTopology* const SiStripDetCabling::trackerTopology ( ) const
inline

Definition at line 66 of file SiStripDetCabling.h.

References tTopo.

Referenced by SiStripQuality::turnOffFeds().

66 {return tTopo;}
const TrackerTopology *const tTopo
uint32_t SiStripDetCabling::undetectedNumber ( const std::string &  subDet,
const uint16_t  layer 
) const
inline

Definition at line 64 of file SiStripDetCabling.h.

References detNumber().

64 { return detNumber(subDet, layer, 2); }
uint32_t detNumber(const std::string &subDet, const uint16_t layer, const int connectionType) const
Return the number of modules for the specified subDet, layer and connectionType.

Member Data Documentation

std::map< uint32_t, std::vector<int> > SiStripDetCabling::connected_
private
std::map< int16_t, uint32_t > SiStripDetCabling::connectionCount[3]
private

Definition at line 88 of file SiStripDetCabling.h.

Referenced by detNumber(), printSummary(), and SiStripDetCabling().

std::map< uint32_t, std::vector<int> > SiStripDetCabling::detected_
private
const SiStripFedCabling* SiStripDetCabling::fedCabling_
private

Definition at line 89 of file SiStripDetCabling.h.

Referenced by fedCabling().

std::map< uint32_t, std::vector<const FedChannelConnection *> > SiStripDetCabling::fullcabling_
private
const TrackerTopology* const SiStripDetCabling::tTopo
private

Definition at line 90 of file SiStripDetCabling.h.

Referenced by layerSearch(), and trackerTopology().

std::map< uint32_t, std::vector<int> > SiStripDetCabling::undetected_
private