CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
PixelDetectorConfig.cc
Go to the documentation of this file.
1 //
2 // Implementation of the detector configuration
3 //
4 //
5 //
6 //
7 
10 #include <fstream>
11 #include <iostream>
12 #include <sstream>
13 #include <ios>
14 #include <stdexcept>
15 #include <cassert>
16 #include <cstdio>
17 
18 using namespace std;
19 using namespace pos;
20 
21 PixelDetectorConfig::PixelDetectorConfig(std::vector<std::vector<std::string> > &tableMat)
22  : PixelConfigBase("", "", "") {
23  std::string mthn = "]\t[PixelDetectorConfig::PixelDetectorConfig()]\t\t ";
24  std::vector<std::string> ins = tableMat[0];
25  std::map<std::string, int> colM;
26  std::vector<std::string> colNames;
27  /*
28  EXTENSION_TABLE_NAME: PIXEL_DETECTOR_CONFIG (VIEW: CONF_KEY_DET_CONFIG_V)
29 
30  CONFIG_KEY NOT NULL VARCHAR2(80)
31  KEY_TYPE NOT NULL VARCHAR2(80)
32  KEY_ALIAS NOT NULL VARCHAR2(80)
33  VERSION VARCHAR2(40)
34  KIND_OF_COND NOT NULL VARCHAR2(40)
35  ROC_NAME NOT NULL VARCHAR2(200)
36  ROC_STATUS NOT NULL VARCHAR2(200)
37  */
38  colNames.push_back("CONFIG_KEY");
39  colNames.push_back("KEY_TYPE");
40  colNames.push_back("KEY_ALIAS");
41  colNames.push_back("VERSION");
42  colNames.push_back("KIND_OF_COND");
43  colNames.push_back("ROC_NAME");
44  colNames.push_back("ROC_STATUS");
45 
46  for (unsigned int c = 0; c < ins.size(); c++) {
47  for (unsigned int n = 0; n < colNames.size(); n++) {
48  if (tableMat[0][c] == colNames[n]) {
49  colM[colNames[n]] = c;
50  break;
51  }
52  }
53  } //end for
54 
55  /*
56  for(unsigned int n=0; n<colNames.size(); n++){
57  if(colM.find(colNames[n]) == colM.end()){
58  std::cerr << __LINE__ << mthn << "Couldn't find in the database the column with name " << colNames[n] << std::endl;
59  assert(0);
60  }
61  }
62  */
63 
64  modules_.clear();
65  rocs_.clear();
66  std::string module = "";
67  for (unsigned int r = 1; r < tableMat.size(); r++) { //Goes to every row of the Matrix
68  PixelROCName roc(tableMat[r][colM["ROC_NAME"]]); // see DACSettings!!!!
69  PixelROCStatus rocstatus;
70  std::string status = tableMat[r][colM["ROC_STATUS"]];
71  // The following is due to the fact that enabled ROCs are
72  // labelled as ON in the DataBase, but have NO label in
73  // configuration files!!!
74  if (status.find("on") != string::npos) {
75  status = "";
76  }
77  if (!status.empty()) {
78  rocstatus.set(status);
79  }
80  rocs_[roc] = rocstatus;
81  if (!rocstatus.get(PixelROCStatus::noInit)) {
82  PixelModuleName module(tableMat[r][colM["ROC_NAME"]]);
83  if (!containsModule(module)) {
84  modules_.push_back(module);
85  }
86  }
87  } //end for r
88 
89  // std::cout << __LINE__ << mthn << "Number of Modules in Detector Configuration Class: " << getNModules() << std::endl;
90 
91 } //end constructor
92 
93 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
94 
96  std::string mthn = "[PixelDetectorConfig::PixelDetectorConfig()]\t\t ";
97 
98  if (filename[filename.size() - 1] == 't') {
99  std::ifstream in(filename.c_str());
100 
101  if (!in.good()) {
102  std::cout << __LINE__ << "]\t" << mthn << "Could not open: " << filename << std::endl;
103  throw std::runtime_error("Failed to open file " + filename);
104  } else {
105  std::cout << __LINE__ << "]\t" << mthn << "Opened: " << filename << std::endl;
106  }
107 
108  if (in.eof()) {
109  std::cout << __LINE__ << "]\t" << mthn << "EOF before reading anything!" << std::endl;
110  throw std::runtime_error("File seems to be empty " + filename);
111  }
112 
113  modules_.clear();
114  rocs_.clear();
115 
117 
118  in >> module;
119 
120  if (module == "Rocs:") {
121  std::cout << __LINE__ << "]\t" << mthn << "New format of detconfig" << std::endl;
122  //new format with list of ROCs.
123  std::string rocname;
124  in >> rocname;
125  while (!in.eof()) {
126  //cout << __LINE__ << "]\t" << mthn << "Read rocname:"<<rocname<<endl;
127  PixelROCName roc(rocname);
129  getline(in, line);
130  //cout << __LINE__ << "]\t" << mthn << "Read line:'"<<line<<"'"<<endl;
131  istringstream instring(line);
132  PixelROCStatus rocstatus;
134  while (!instring.eof()) {
135  instring >> status;
136  // cout << __LINE__ << "]\t" << mthn << "Read status:"<<status<<endl;
137  if (!status.empty()) {
138  rocstatus.set(status);
139  }
140  }
141  rocs_[roc] = rocstatus;
142  if (!rocstatus.get(PixelROCStatus::noInit)) {
143  PixelModuleName module(rocname);
144  if (!containsModule(module)) {
145  modules_.push_back(module);
146  }
147  }
148  in >> rocname;
149  }
150  return;
151  }
152 
153  //std::cout << __LINE__ << "]\t" << mthn << "Read module:"<<module<<std::endl;
154 
155  if (in.eof())
156  std::cout << mthn << "EOF after reading first module name" << std::endl;
157 
158  std::cout << __LINE__ << "]\t" << mthn << "Old format of detconfig" << std::endl;
159  while (!in.eof()) {
160  //std::cout << __LINE__ << "]\t" << mthn << "Read module:"<<module<<std::endl;
161 
162  PixelModuleName moduleName(module);
163 
164  modules_.push_back(moduleName);
165 
166  in >> module;
167 
168  assert(modules_.size() < 10000);
169  }
170 
171  in.close();
172 
173  } else {
174  assert(0);
175 
176  /*
177  std::ifstream in(filename.c_str(),std::ios::binary);
178 
179  if (!in.good()){
180  std::cout << __LINE__ << "]\t" << mthn << "Could not open:"<<filename<<std::endl;
181  assert(0);
182  }
183  else {
184  std::cout << __LINE__ << "]\t" << mthn << "Opened:"<<filename<<std::endl;
185  }
186 
187  char nchar;
188 
189  in.read(&nchar,1);
190 
191  std::string s1;
192 
193  //wrote these lines of code without ref. needs to be fixed
194  for(int i=0;i< nchar; i++){
195  char c;
196  in >>c;
197  s1.push_back(c);
198  }
199 
200  //std::cout << __LINE__ << "]\t" << mthn << "READ ROC name:"<<s1<<std::endl;
201 
202  dacsettings_.clear();
203 
204 
205  while (!in.eof()){
206 
207  //std::cout << __LINE__ << "]\t" << mthn << "read s1:"<<s1<<std::endl;
208 
209  PixelROCName rocid(s1);
210 
211  //std::cout << __LINE__ << "]\t" << mthn << "read rocid:"<<rocid<<std::endl;
212 
213  PixelROCDetectorConfig tmp;
214 
215  tmp.readBinary(in, rocid);
216 
217  dacsettings_.push_back(tmp);
218 
219 
220  in.read(&nchar,1);
221 
222  s1.clear();
223 
224  if (in.eof()) continue;
225 
226  //wrote these lines of code without ref. needs to be fixed
227  for(int i=0;i< nchar; i++){
228  char c;
229  in >>c;
230  s1.push_back(c);
231  }
232 
233 
234  }
235 
236  in.close();
237 
238  */
239  }
240 
241  //std::cout << __LINE__ << "]\t" << mthn << "Read dac settings for "<<dacsettings_.size()<<" ROCs"<<std::endl;
242 }
243 
244 unsigned int PixelDetectorConfig::getNModules() const { return modules_.size(); }
245 
247 
248 std::set<unsigned int> PixelDetectorConfig::getFEDs(PixelNameTranslation *translation) const {
249  std::set<unsigned int> feds;
250  assert(!modules_.empty());
251  std::vector<PixelModuleName>::const_iterator imodule = modules_.begin();
252 
253  for (; imodule != modules_.end(); ++imodule) {
254  std::set<PixelChannel> channelsOnThisModule = translation->getChannelsOnModule(*imodule);
255  for (std::set<PixelChannel>::const_iterator channelsOnThisModule_itr = channelsOnThisModule.begin();
256  channelsOnThisModule_itr != channelsOnThisModule.end();
257  ++channelsOnThisModule_itr) {
258  const PixelHdwAddress &channel_hdwaddress = translation->getHdwAddress(*channelsOnThisModule_itr);
259  unsigned int fednumber = channel_hdwaddress.fednumber();
260  feds.insert(fednumber);
261  }
262  }
263 
264  return feds;
265 }
266 
267 // Returns the FED numbers and channels within each FED that are used
268 std::map<unsigned int, std::set<unsigned int> > PixelDetectorConfig::getFEDsAndChannels(
269  PixelNameTranslation *translation) const {
270  // FED Number channels
271 
272  std::map<unsigned int, std::set<unsigned int> > fedsChannels;
273  assert(!modules_.empty());
274  std::vector<PixelModuleName>::const_iterator imodule = modules_.begin();
275 
276  for (; imodule != modules_.end(); ++imodule) {
277  std::set<PixelChannel> channelsOnThisModule = translation->getChannelsOnModule(*imodule);
278  for (std::set<PixelChannel>::const_iterator channelsOnThisModule_itr = channelsOnThisModule.begin();
279  channelsOnThisModule_itr != channelsOnThisModule.end();
280  ++channelsOnThisModule_itr) {
281  const PixelHdwAddress &channel_hdwaddress = translation->getHdwAddress(*channelsOnThisModule_itr);
282  unsigned int fednumber = channel_hdwaddress.fednumber();
283  unsigned int fedchannel = channel_hdwaddress.fedchannel();
284  fedsChannels[fednumber].insert(fedchannel);
285  }
286  }
287 
288  return fedsChannels;
289 }
290 
291 bool PixelDetectorConfig::containsModule(const PixelModuleName &moduleToFind) const {
292  for (std::vector<PixelModuleName>::const_iterator modules_itr = modules_.begin(); modules_itr != modules_.end();
293  ++modules_itr) {
294  if (*modules_itr == moduleToFind)
295  return true;
296  }
297  return false;
298 }
299 
300 // modified by MR on 11-01-2008 15:06:51
302  std::stringstream s;
303  s << __LINE__ << "]\t[PixelDetectorConfig::writeASCII()]\t\t ";
304  std::string mthn = s.str();
305 
306  if (!dir.empty())
307  dir += "/";
308  std::string filename = dir + "detectconfig.dat";
309 
310  std::ofstream out(filename.c_str(), std::ios_base::out);
311  if (!out) {
312  std::cout << __LINE__ << "]\t" << mthn << "Could not open file " << filename << " for write" << std::endl;
313  exit(1);
314  }
315 
316  if (rocs_.empty()) {
317  std::vector<PixelModuleName>::const_iterator imodule = modules_.begin();
318 
319  for (; imodule != modules_.end(); ++imodule) {
320  out << *imodule << std::endl;
321  }
322  } else {
323  out << "Rocs:" << endl;
324  std::map<PixelROCName, PixelROCStatus>::const_iterator irocs = rocs_.begin();
325  for (; irocs != rocs_.end(); ++irocs) {
326  out << (irocs->first).rocname() << " " << (irocs->second).statusName() << endl;
327  }
328  }
329 
330  out.close();
331 }
332 
333 //=============================================================================================
335  int version,
337  std::ofstream *outstream,
338  std::ofstream *out1stream,
339  std::ofstream *out2stream) const {
340  std::string mthn = "]\t[PixelDetectorConfig::writeXMLHeader()]\t\t\t ";
341  std::stringstream fullPath;
342  fullPath << path << "/Pixel_DetectorConfig_" << PixelTimeFormatter::getmSecTime() << ".xml";
343  cout << __LINE__ << mthn << "Writing to: " << fullPath.str() << endl;
344 
345  outstream->open(fullPath.str().c_str());
346 
347  if (!outstream->good()) {
348  cout << __LINE__ << mthn << "FATAL: could not open file " << fullPath.str() << endl;
349  assert(0);
350  }
351 
352  *outstream << "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" << std::endl;
353  *outstream << "<ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" << std::endl;
354  *outstream << "" << std::endl;
355  *outstream << " <!-- " << mthn << "-->" << std::endl;
356  *outstream << "" << std::endl;
357  *outstream << " <HEADER>" << std::endl;
358  *outstream << " <TYPE>" << std::endl;
359  *outstream << " <EXTENSION_TABLE_NAME>PIXEL_DETECTOR_CONFIG</EXTENSION_TABLE_NAME>" << std::endl;
360  *outstream << " <NAME>Pixel Detector Configuration</NAME>" << std::endl;
361  *outstream << " </TYPE>" << std::endl;
362  *outstream << " <RUN>" << std::endl;
363  *outstream << " <RUN_TYPE>Pixel Detector Configuration test</RUN_TYPE>" << std::endl;
364  *outstream << " <RUN_NUMBER>1</RUN_NUMBER>" << std::endl;
365  *outstream << " <RUN_BEGIN_TIMESTAMP>" << pos::PixelTimeFormatter::getTime() << "</RUN_BEGIN_TIMESTAMP>"
366  << std::endl;
367  *outstream << " <LOCATION>CERN P5</LOCATION>" << std::endl;
368  *outstream << " </RUN>" << std::endl;
369  *outstream << " </HEADER>" << std::endl;
370  *outstream << "" << std::endl;
371  *outstream << " <DATA_SET>" << std::endl;
372  *outstream << " " << std::endl;
373  *outstream << " <VERSION>" << version << "</VERSION>" << std::endl;
374  *outstream << " <COMMENT_DESCRIPTION>" << getComment() << "</COMMENT_DESCRIPTION>" << std::endl;
375  *outstream << " <CREATED_BY_USER>" << getAuthor() << "</CREATED_BY_USER>" << std::endl;
376  *outstream << " " << std::endl;
377  *outstream << " <PART>" << std::endl;
378  *outstream << " <NAME_LABEL>CMS-PIXEL-ROOT</NAME_LABEL>" << std::endl;
379  *outstream << " <KIND_OF_PART>Detector ROOT</KIND_OF_PART>" << std::endl;
380  *outstream << " </PART>" << std::endl;
381 }
382 
383 //=============================================================================================
384 void PixelDetectorConfig::writeXML(std::ofstream *outstream,
385  std::ofstream *out1stream,
386  std::ofstream *out2stream) const {
387  std::stringstream s;
388  s << __LINE__ << "]\t[PixelDetectorConfig::writeXML()]\t\t\t ";
389  std::string mthn = s.str();
390  if (rocs_.empty()) {
391  std::vector<PixelModuleName>::const_iterator imodule = modules_.begin();
392 
393  // This needs to be fixed: given a module name, actually loop over ROCs to write the XML data
394  for (; imodule != modules_.end(); ++imodule) {
395  *outstream << " <DATA>" << std::endl;
396  //----> out << " <ROC_NAME>" << (irocs->first).rocname() << "</ROC_NAME>" << std::endl ;
397  *outstream << " <ROC_STATUS>on</ROC_STATUS>" << std::endl;
398  *outstream << " </DATA>" << std::endl;
399  *outstream << " " << std::endl;
400  }
401  } else {
402  std::map<PixelROCName, PixelROCStatus>::const_iterator irocs = rocs_.begin();
403  for (; irocs != rocs_.end(); ++irocs) {
404  std::string sts = (irocs->second).statusName();
405  if (sts.empty()) {
406  sts = "on";
407  }
408  *outstream << " " << std::endl;
409  *outstream << " <DATA>" << std::endl;
410  *outstream << " <ROC_NAME>" << (irocs->first).rocname() << "</ROC_NAME>" << std::endl;
411  *outstream << " <ROC_STATUS>" << sts << "</ROC_STATUS>" << std::endl;
412  *outstream << " </DATA>" << std::endl;
413  }
414  }
415 }
416 
417 //=============================================================================================
418 void PixelDetectorConfig::writeXMLTrailer(std::ofstream *outstream,
419  std::ofstream *out1stream,
420  std::ofstream *out2stream) const {
421  std::stringstream s;
422  s << __LINE__ << "]\t[PixelDetectorConfig::writeXMLTrailer()]\t\t\t ";
423  std::string mthn = s.str();
424 
425  *outstream << " " << std::endl;
426  *outstream << " </DATA_SET>" << std::endl;
427  *outstream << "</ROOT> " << std::endl;
428 
429  outstream->close();
430 }
431 //=============================================================================================
433  std::stringstream s;
434  s << __LINE__ << "]\t[PixelDetectorConfig::writeXML()]\t\t\t ";
435  std::string mthn = s.str();
436 
437  std::stringstream fullPath;
438 
439  fullPath << path << "/Pixel_DetectorConfig.xml";
440  cout << __LINE__ << "]\t" << mthn << "Writing to: " << fullPath.str() << std::endl;
441 
442  std::ofstream out(fullPath.str().c_str());
443 
444  out << "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" << std::endl;
445  out << "<ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" << std::endl;
446  out << " <HEADER>" << std::endl;
447  out << " <TYPE>" << std::endl;
448  out << " <EXTENSION_TABLE_NAME>PIXEL_DETECTOR_CONFIG</EXTENSION_TABLE_NAME>" << std::endl;
449  out << " <NAME>Pixel Detector Configuration</NAME>" << std::endl;
450  out << " </TYPE>" << std::endl;
451  out << " <RUN>" << std::endl;
452  out << " <RUN_TYPE>Pixel Detector Configuration test</RUN_TYPE>" << std::endl;
453  out << " <RUN_NUMBER>1</RUN_NUMBER>" << std::endl;
454  out << " <RUN_BEGIN_TIMESTAMP>" << pos::PixelTimeFormatter::getTime() << "</RUN_BEGIN_TIMESTAMP>" << std::endl;
455  out << " <COMMENT_DESCRIPTION>Test of DetectorConfig xml</COMMENT_DESCRIPTION>" << std::endl;
456  out << " <LOCATION>CERN TAC</LOCATION>" << std::endl;
457  out << " <CREATED_BY_USER>Dario Menasce</CREATED_BY_USER>" << std::endl;
458  out << " </RUN>" << std::endl;
459  out << " </HEADER>" << std::endl;
460  out << "" << std::endl;
461  out << "" << std::endl;
462 
463  if (rocs_.empty()) {
464  std::vector<PixelModuleName>::const_iterator imodule = modules_.begin();
465 
466  // This needs to be fixed: given a module name, actually loop over ROCs to write the XML data
467  for (; imodule != modules_.end(); ++imodule) {
468  out << " <DATA>" << std::endl;
469  //----> out << " <ROC_NAME>" << (irocs->first).rocname() << "</ROC_NAME>" << std::endl ;
470  out << " <ROC_STATUS>on</ROC_STATUS>" << std::endl;
471  out << " </DATA>" << std::endl;
472  out << " " << std::endl;
473  }
474  } else {
475  std::map<PixelROCName, PixelROCStatus>::const_iterator irocs = rocs_.begin();
476  for (; irocs != rocs_.end(); ++irocs) {
477  std::string sts = (irocs->second).statusName();
478  if (sts.empty()) {
479  sts = "on";
480  }
481  out << " <DATA_SET>" << std::endl;
482  out << " <VERSION>" << version << "</VERSION>" << std::endl;
483  out << " <PART>" << std::endl;
484  out << " <NAME_LABEL>" << (irocs->first).rocname() << "</NAME_LABEL>" << std::endl;
485  out << " <KIND_OF_PART>ROC</KIND_OF_PART>" << std::endl;
486  out << " </PART>" << std::endl;
487  out << " <DATA>" << std::endl;
488  out << " <ROC_NAME>" << (irocs->first).rocname() << "</ROC_NAME>" << std::endl;
489  out << " <ROC_STATUS>" << sts << "</ROC_STATUS>" << std::endl;
490  out << " </DATA>" << std::endl;
491  out << " </DATA_SET>" << std::endl;
492  out << " " << std::endl;
493  }
494  }
495  out << " </DATA_SET>" << std::endl;
496  out << "</ROOT> " << std::endl;
497  out.close();
498  assert(0);
499 }
500 
501 //=============================================================================================
502 void PixelDetectorConfig::addROC(PixelROCName &theROC) // Added by Dario (March 3, 2008)
503 {
504  std::stringstream s;
505  s << __LINE__ << "]\t[PixelDetectorConfig::addROC()]\t\t\t\t ";
506  std::string mthn = s.str();
507 
508  std::map<PixelROCName, PixelROCStatus>::iterator theROCIt = rocs_.find(theROC);
509  if (theROCIt == rocs_.end()) // if theROC was not there, add it and turn it on
510  {
511  PixelROCStatus theStatus;
512  theStatus.reset();
513  rocs_[theROC] = theStatus;
514  // cout << __LINE__ << "]\t" << mthn << "Non existing ROC (" << theROC.rocname() << "): adding it" << endl ;
515  } else {
516  theROCIt->second.reset(); // otherwise just turn it on by resetting it to zero
517  // cout << __LINE__ << "]\t" << mthn << "Already existing ROC (" << theROC.rocname() << "): switching it on" << endl ;
518  }
519 }
520 
521 //=============================================================================================
522 void PixelDetectorConfig::addROC(PixelROCName &theROC, string statusLabel) // modified by MR on 14-05-2008 11:29:51
523 {
524  std::stringstream s;
525  s << __LINE__ << "]\t[PixelDetectorConfig::addROC()]\t\t\t\t ";
526  std::string mthn = s.str();
527 
528  std::map<PixelROCName, PixelROCStatus>::iterator theROCIt = rocs_.find(theROC);
529  if (theROCIt == rocs_.end()) // if theROC was not there, add it and turn it on
530  {
531  PixelROCStatus theStatus;
532  theStatus.set(statusLabel);
533  theStatus.reset();
534  rocs_[theROC] = theStatus;
535  // cout << __LINE__ << "]\t" << mthn << "Non existing ROC (" << theROC.rocname() << "): adding it" << endl ;
536  } else {
537  theROCIt->second.set(statusLabel); // otherwise just turn it on by resetting it to zero
538  // cout << __LINE__ << "]\t" << mthn << "Already existing ROC (" << theROC.rocname() << "): switching it on" << endl ;
539  }
540 }
541 
542 //=============================================================================================
543 void PixelDetectorConfig::removeROC(PixelROCName &theROC) // Added by Dario (March 3, 2008)
544 {
545  std::string mthn = "[PixelDetectorConfig::removeROC()]\t\t\t\t ";
546 
547  std::map<PixelROCName, PixelROCStatus>::iterator theROCIt = rocs_.find(theROC);
548  if (theROCIt != rocs_.end()) // if theROC was there remove it, otherwise ignore
549  {
550  theROCIt->second.set("noInit");
551  // cout << __LINE__ << "]\t" << mthn << "Already existing ROC (" << theROC.rocname() << "): switching it off" << endl ;
552  } else {
553  PixelROCStatus theStatus;
554  theStatus.set("noInit");
555  rocs_[theROC] = theStatus;
556  // cout << __LINE__ << "]\t" << mthn << "ROC " << theROC.rocname() << " was not individually declared in the file: declare and switch off" << endl ;
557  }
558 }
559 
560 //std::ostream& operator<<(std::ostream& s, const PixelDetectorConfig& dacs){
561 //
562 // s << dacs.getDetectorConfig(0) <<std::endl;
563 //
564 // return s;
565 //
566 //}
const PixelHdwAddress * getHdwAddress(const PixelROCName &aROC) const
This class specifies which detector components are used in the configuration (and eventually should s...
This file contains the base class for &quot;pixel configuration data&quot; management.
const edm::EventSetup & c
std::set< unsigned int > getFEDs(PixelNameTranslation *translation) const
std::map< unsigned int, std::set< unsigned int > > getFEDsAndChannels(PixelNameTranslation *translation) const
unsigned int fednumber() const
list status
Definition: mps_update.py:107
unsigned int getNModules() const
bool get(ROCstatus stat) const
assert(be >=bs)
static std::string getmSecTime(void)
static std::string getTime(void)
PixelDetectorConfig(std::vector< std::vector< std::string > > &tableMat)
std::string getComment() const
unsigned int fedchannel() const
std::map< PixelROCName, PixelROCStatus > rocs_
tuple key
prepare the HTCondor submission files and eventually submit them
PixelModuleName getModule(unsigned int i) const
This class provides utility methods to manipulate ASCII formatted timestamps.
Store mfec, mfecchannel etc.
tuple ins
Definition: cuy.py:313
std::string getAuthor() const
std::vector< PixelModuleName > modules_
void writeXML(pos::PixelConfigKey key, int version, std::string path) const override
void writeXMLTrailer(std::ofstream *out, std::ofstream *out1=nullptr, std::ofstream *out2=nullptr) const override
This class implements..
void addROC(PixelROCName &, std::string statusLabel)
std::set< PixelChannel > getChannelsOnModule(const PixelModuleName &aModule) const
This is the documentation about PixelNameTranslation...
void set(ROCstatus stat)
This class implements..
This class implements..
Definition: PixelROCName.h:23
This class implements..
bool containsModule(const PixelModuleName &moduleToFind) const
tuple filename
Definition: lut2db_cfg.py:20
void writeXMLHeader(pos::PixelConfigKey key, int version, std::string path, std::ofstream *out, std::ofstream *out1=nullptr, std::ofstream *out2=nullptr) const override
void writeASCII(std::string dir="") const override
tuple cout
Definition: gather_cfg.py:144
void removeROC(PixelROCName &)
tuple module
Definition: callgraph.py:69