CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Static Public Member Functions | Static Private Member Functions
EcalDAQTowerStatusXMLTranslator Class Reference

#include <EcalDAQTowerStatusXMLTranslator.h>

Static Public Member Functions

static int readXML (const std::string &filename, EcalCondHeader &header, EcalDAQTowerStatus &record)
 
static int writeXML (const std::string &filename, const EcalCondHeader &header, const EcalDAQTowerStatus &record)
 

Static Private Member Functions

static std::string dumpXML (const EcalCondHeader &header, const EcalDAQTowerStatus &record)
 
static void plot (std::string, const EcalDAQTowerStatus &record)
 

Detailed Description

Translates a EcalGainRatio record to XML and vice versa

Author
Francesco RUBBO
Version
Id:
EcalDAQTowerStatusXMLTranslator.h,v 0 2010/05/31 fay Exp
Date
26 Apr 2010

Definition at line 15 of file EcalDAQTowerStatusXMLTranslator.h.

Member Function Documentation

std::string EcalDAQTowerStatusXMLTranslator::dumpXML ( const EcalCondHeader header,
const EcalDAQTowerStatus record 
)
staticprivate

Definition at line 81 of file EcalDAQTowerStatusXMLTranslator.cc.

References EcalCondTowerObjectContainer< T >::barrelItems(), gather_cfg::cout, xuti::DAQStatusCode_tag(), xuti::DAQTowerStatus_tag(), EcalTrigTowerDetId::detIdFromDenseIndex(), remoteMonitoring_LASER_era2018_cfg::dump, EcalCondTowerObjectContainer< T >::end(), EcalCondTowerObjectContainer< T >::endcapItems(), EcalCondTowerObjectContainer< T >::find(), EcalTrigTowerDetId::kEBTotalTowers, EcalTrigTowerDetId::kEETotalTowers, AlCaHLTBitMon_QueryRunRegistry::string, cms::xerces::toString(), parallelization::uint(), EcalScDetId::unhashIndex(), cms::xerces::uStr(), EcalScDetId::validHashIndex(), xuti::writeCell(), xuti::writeHeader(), and xuti::WriteNodeWithValue().

81  {
82  unique_ptr<DOMImplementation> impl(DOMImplementationRegistry::getDOMImplementation(cms::xerces::uStr("LS").ptr()));
83 
84  DOMLSSerializer* writer = impl->createLSSerializer();
85  if (writer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true))
86  writer->getDomConfig()->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true);
87 
88  DOMDocumentType* doctype = impl->createDocumentType(cms::xerces::uStr("XML").ptr(), nullptr, nullptr);
89  DOMDocument* doc = impl->createDocument(nullptr, cms::xerces::uStr(DAQTowerStatus_tag.c_str()).ptr(), doctype);
90 
91  DOMElement* root = doc->getDocumentElement();
92 
93  xuti::writeHeader(root, header);
94  std::cout << " barrel size " << record.barrelItems().size() << std::endl;
95  if (record.barrelItems().empty())
96  return std::string();
97  for (uint cellid = 0; cellid < EcalTrigTowerDetId::kEBTotalTowers; ++cellid) {
98  uint32_t rawid = EcalTrigTowerDetId::detIdFromDenseIndex(cellid);
99  if (record.find(rawid) == record.end())
100  continue;
101  DOMElement* cellnode = writeCell(root, rawid);
102 
103  WriteNodeWithValue(cellnode, DAQStatusCode_tag, record[rawid].getStatusCode());
104  }
105 
106  std::cout << " endcap size " << record.endcapItems().size() << std::endl;
107  if (record.endcapItems().empty())
108  return std::string();
109  for (uint cellid = 0; cellid < EcalTrigTowerDetId::kEETotalTowers; ++cellid) {
110  if (!EcalScDetId::validHashIndex(cellid))
111  continue;
112  uint32_t rawid = EcalScDetId::unhashIndex(cellid);
113 
114  if (record.find(rawid) == record.end())
115  continue;
116  DOMElement* cellnode = writeCell(root, rawid);
117 
118  WriteNodeWithValue(cellnode, DAQStatusCode_tag, record[rawid].getStatusCode());
119  }
120 
121  std::string dump = cms::xerces::toString(writer->writeToString(root));
122  doc->release();
123  doctype->release();
124  writer->release();
125 
126  return dump;
127 }
static EcalTrigTowerDetId detIdFromDenseIndex(uint32_t di)
const std::string DAQTowerStatus_tag("EcalDAQTowerStatus")
static EcalScDetId unhashIndex(int hi)
Definition: EcalScDetId.h:117
const_iterator find(uint32_t rawId) const
void WriteNodeWithValue(xercesc::DOMNode *parentNode, const std::string &tag, const T &value)
write a node with
std::string toString(XMLCh const *toTranscode)
void writeHeader(xercesc::DOMNode *parentNode, const EcalCondHeader &header)
write
ZStr< XMLCh > uStr(char const *str)
const std::string DAQStatusCode_tag("DAQStatusCode")
static bool validHashIndex(int hi)
Definition: EcalScDetId.h:139
tuple cout
Definition: gather_cfg.py:144
xercesc::DOMElement * writeCell(xercesc::DOMNode *node, const DetId &detid)
Append a Cell node with attributes to.
tuple dump
OutputFilePath = cms.string(&#39;/tmp/zhokin/&#39;), OutputFileExt = cms.string(&#39;&#39;),.
void EcalDAQTowerStatusXMLTranslator::plot ( std::string  fn,
const EcalDAQTowerStatus record 
)
staticprivate

Definition at line 129 of file EcalDAQTowerStatusXMLTranslator.cc.

References EcalCondTowerObjectContainer< T >::barrelItems(), gather_cfg::cout, EcalTrigTowerDetId::detIdFromDenseIndex(), EcalCondTowerObjectContainer< T >::end(), EcalCondTowerObjectContainer< T >::endcapItems(), EcalCondTowerObjectContainer< T >::find(), groupFilesInBlocks::fout, EcalTrigTowerDetId::ieta(), EcalTrigTowerDetId::iphi(), EcalScDetId::ix(), EcalScDetId::iy(), isotrackApplyRegressor::k, EcalTrigTowerDetId::kEBTotalTowers, EcalTrigTowerDetId::kEETotalTowers, geometryCSVtoXML::line, parallelization::uint(), EcalScDetId::unhashIndex(), EcalScDetId::validHashIndex(), and EcalScDetId::zside().

129  {
130  std::ofstream fout(fn.c_str());
131  int valEB[34][72];
132  std::cout << " barrel size " << record.barrelItems().size() << std::endl;
133  if (record.barrelItems().empty())
134  return;
135  for (uint cellid = 0; cellid < EcalTrigTowerDetId::kEBTotalTowers; ++cellid) {
137  if (record.find(rawid) == record.end())
138  continue;
139  int ieta = rawid.ieta();
140  int line = 17 - ieta;
141  if (ieta < 0)
142  line--;
143  int iphi = rawid.iphi() - 1; // 0 to 71
144  valEB[line][iphi] = record[rawid].getStatusCode();
145  }
146  for (int line = 0; line < 34; line++) {
147  for (int iphi = 0; iphi < 72; iphi++)
148  fout << valEB[line][iphi] << " ";
149  fout << std::endl;
150  if (line == 16)
151  fout << std::endl;
152  }
153 
154  std::cout << " endcap size " << record.endcapItems().size() << std::endl;
155  if (record.endcapItems().empty())
156  return;
157  int valEE[2][20][20];
158  for (int k = 0; k < 2; k++)
159  for (int ix = 0; ix < 20; ix++)
160  for (int iy = 0; iy < 20; iy++)
161  valEE[k][ix][iy] = -1;
162  for (uint cellid = 0; cellid < EcalTrigTowerDetId::kEETotalTowers; ++cellid) {
163  if (EcalScDetId::validHashIndex(cellid)) {
164  EcalScDetId rawid = EcalScDetId::unhashIndex(cellid);
165  int ix = rawid.ix() - 1; // 0 to 19
166  int iy = 20 - rawid.iy(); // 0 to 19
167  int side = rawid.zside();
168  int iz = side;
169  if (side == -1)
170  iz = 0;
171  if (ix < 0 || ix > 19)
172  std::cout << " Pb in ix " << ix << std::endl;
173  if (iy < 0 || iy > 19)
174  std::cout << " Pb in iy " << iy << std::endl;
175  valEE[iz][ix][iy] = record[rawid].getStatusCode();
176  }
177  }
178  for (int k = 0; k < 2; k++) {
179  int iz = -1;
180  if (k == 1)
181  iz = 1;
182  fout << " Side : " << iz << std::endl;
183  for (int line = 0; line < 20; line++) {
184  for (int ix = 0; ix < 20; ix++) {
185  if (valEE[k][ix][line] < 0)
186  fout << ". ";
187  else
188  fout << valEE[k][ix][line] << " ";
189  }
190  fout << std::endl;
191  }
192  fout << std::endl;
193  }
194 
195  return;
196 }
static EcalTrigTowerDetId detIdFromDenseIndex(uint32_t di)
static EcalScDetId unhashIndex(int hi)
Definition: EcalScDetId.h:117
const_iterator find(uint32_t rawId) const
int ieta() const
get the tower ieta
int ix() const
Definition: EcalScDetId.h:70
int iy() const
Definition: EcalScDetId.h:76
int iphi() const
get the tower iphi
int zside() const
Definition: EcalScDetId.h:64
static bool validHashIndex(int hi)
Definition: EcalScDetId.h:139
tuple cout
Definition: gather_cfg.py:144
int EcalDAQTowerStatusXMLTranslator::readXML ( const std::string &  filename,
EcalCondHeader header,
EcalDAQTowerStatus record 
)
static

Definition at line 21 of file EcalDAQTowerStatusXMLTranslator.cc.

References xuti::Cell_tag(), officialStyle::chan, gather_cfg::cout, xuti::DAQStatusCode_tag(), xuti::getChildNode(), xuti::GetNodeData(), writedatasetfile::parser, xuti::readCellId(), xuti::readHeader(), mps_update::status, cms::concurrency::xercesInitialize(), and cms::concurrency::xercesTerminate().

23  {
24  std::cout << " DAQTowerStatus should not be filled out from an xml file ..." << std::endl;
26 
27  XercesDOMParser* parser = new XercesDOMParser;
28  parser->setValidationScheme(XercesDOMParser::Val_Never);
29  parser->setDoNamespaces(false);
30  parser->setDoSchema(false);
31 
32  parser->parse(filename.c_str());
33 
34  DOMDocument* xmlDoc = parser->getDocument();
35  if (!xmlDoc) {
36  std::cout << "EcalDAQTowerStatusXMLTranslator::Error parsing document" << std::endl;
37  return -1;
38  }
39 
40  DOMElement* elementRoot = xmlDoc->getDocumentElement();
41 
42  xuti::readHeader(elementRoot, header);
43 
44  DOMNode* cellnode = getChildNode(elementRoot, Cell_tag);
45 
46  int chan = 0;
47  while (cellnode) {
48  int status = -1;
49  DetId detid = readCellId(dynamic_cast<DOMElement*>(cellnode));
50 
51  DOMNode* my_node = getChildNode(cellnode, DAQStatusCode_tag);
52  GetNodeData(my_node, status);
53 
54  record[detid] = status;
55 
56  cellnode = cellnode->getNextSibling();
57 
58  while (cellnode && cellnode->getNodeType() != DOMNode::ELEMENT_NODE)
59  cellnode = cellnode->getNextSibling();
60  chan++;
61  }
62 
63  delete parser;
65  return 0;
66 }
void xercesTerminate()
Definition: Xerces.cc:23
tuple chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, &quot;NDC&quot;) lumi.SetBorderSize( 0 ) lumi...
list status
Definition: mps_update.py:107
void xercesInitialize()
Definition: Xerces.cc:18
void readHeader(xercesc::DOMNode *parentNode, EcalCondHeader &header)
read header from
const std::string Cell_tag("cell")
const std::string DAQStatusCode_tag("DAQStatusCode")
Definition: DetId.h:17
void GetNodeData(xercesc::DOMNode *node, T &value)
get the node data
xercesc::DOMNode * getChildNode(xercesc::DOMNode *node, const std::string &nodename)
get the child of
tuple filename
Definition: lut2db_cfg.py:20
tuple cout
Definition: gather_cfg.py:144
const DetId readCellId(xercesc::DOMElement *node)
Assuming.
int EcalDAQTowerStatusXMLTranslator::writeXML ( const std::string &  filename,
const EcalCondHeader header,
const EcalDAQTowerStatus record 
)
static

Definition at line 68 of file EcalDAQTowerStatusXMLTranslator.cc.

References EcalCondTools::dumpXML(), compareTotals::fs, submitPVResolutionJobs::out, cms::concurrency::xercesInitialize(), and cms::concurrency::xercesTerminate().

70  {
72 
73  std::fstream fs(filename.c_str(), ios::out);
74  fs << dumpXML(header, record);
75 
77 
78  return 0;
79 }
void xercesTerminate()
Definition: Xerces.cc:23
void xercesInitialize()
Definition: Xerces.cc:18
static std::string dumpXML(const EcalCondHeader &header, const EcalDAQTowerStatus &record)
tuple filename
Definition: lut2db_cfg.py:20