CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes | Static Private Attributes
RPCPatternsParser Class Reference

#include <RPCPatternsParser.h>

Inheritance diagram for RPCPatternsParser:

Public Member Functions

void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname) override
 
const RPCPattern::RPCPatVecgetPatternsVec (const int tower, const int sc, const int sg) const
 
const RPCPattern::RPCPatVecgetPatternsVec (const RPCConst::l1RpcConeCrdnts &coneCrds) const
 
const RPCPattern::TQualityVecgetQualityVec () const
 
void parse (std::string fileName)
 
 RPCPatternsParser ()
 
void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const XERCES_CPP_NAMESPACE::Attributes &attrs) override
 
 ~RPCPatternsParser () override
 

Private Types

typedef std::map< RPCConst::l1RpcConeCrdnts, RPCPattern::RPCPatVecTPatternsVecsMap
 

Private Attributes

TPatternsVecsMap::iterator m_CurPacIt
 
RPCPattern m_CurPattern
 
std::string m_CurrElement
 
TPatternsVecsMap m_PatternsVecsMap
 
RPCPattern::TQualityVec m_QualityVec
 

Static Private Attributes

static int m_InstanceCount = 0
 

Detailed Description

Definition at line 19 of file RPCPatternsParser.h.

Member Typedef Documentation

◆ TPatternsVecsMap

Definition at line 67 of file RPCPatternsParser.h.

Constructor & Destructor Documentation

◆ RPCPatternsParser()

RPCPatternsParser::RPCPatternsParser ( )

Definition at line 96 of file RPCPatternsParser.cc.

97  {
98  if (m_InstanceCount == 0) {
99  try {
101  //XPathEvaluator::initialize();
102  m_InstanceCount++;
103  } catch (const XMLException& toCatch) {
104  throw RPCException("Error during Xerces-c Initialization: " + xMLCh2String(toCatch.getMessage()));
105  //edm::LogError("RPCTrigger")<< "Error during Xerces-c Initialization: "
106  // + xMLCh2String(toCatch.getMessage());
107  }
108  }

References cms::concurrency::xercesInitialize(), and xMLCh2String().

◆ ~RPCPatternsParser()

RPCPatternsParser::~RPCPatternsParser ( )
override

Definition at line 110 of file RPCPatternsParser.cc.

References cms::concurrency::xercesTerminate().

Member Function Documentation

◆ endElement()

void RPCPatternsParser::endElement ( const XMLCh *const  uri,
const XMLCh *const  localname,
const XMLCh *const  qname 
)
override

Definition at line 186 of file RPCPatternsParser.cc.

187  {
188  string element = xMLCh2String(localname);
189  if (element == "pat") {
190  m_CurPacIt->second.push_back(m_CurPattern);
191  }

References xMLCh2String().

◆ getPatternsVec() [1/2]

const RPCPattern::RPCPatVec & RPCPatternsParser::getPatternsVec ( const int  tower,
const int  sc,
const int  sg 
) const

Definition at line 55 of file RPCPatternsParser.cc.

56  {
57  RPCConst::l1RpcConeCrdnts cords(tower, sc, sg);
58 
59  return getPatternsVec(cords);

References hgcalTowerProducer_cfi::tower.

◆ getPatternsVec() [2/2]

const RPCPattern::RPCPatVec & RPCPatternsParser::getPatternsVec ( const RPCConst::l1RpcConeCrdnts coneCrds) const

Definition at line 44 of file RPCPatternsParser.cc.

45  {
46  TPatternsVecsMap::const_iterator patVecIt = m_PatternsVecsMap.find(coneCrds);
47  if (patVecIt == m_PatternsVecsMap.end()) {
48  std::stringstream ss;
49  ss << coneCrds.m_Tower << " " << coneCrds.m_LogSector << " " << coneCrds.m_LogSegment;
50  throw RPCException(std::string("no such a cone in m_PatternsVecsMap: ") + ss.str());
51  //edm::LogError("RPCTrigger")<< "no such a cone in m_PatternsVecsMap";
52  }
53  return patVecIt->second; // XXX - TMF - was in if{}, changed to avoid warning

References RPCConst::l1RpcConeCrdnts::m_LogSector, RPCConst::l1RpcConeCrdnts::m_LogSegment, RPCConst::l1RpcConeCrdnts::m_Tower, contentValuesCheck::ss, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ getQualityVec()

const RPCPattern::TQualityVec& RPCPatternsParser::getQualityVec ( ) const
inline

Definition at line 52 of file RPCPatternsParser.h.

53  :
54  //virtual void startElement(const XMLCh* const name, xercesc::AttributeList& attributes);

◆ parse()

void RPCPatternsParser::parse ( std::string  fileName)

Definition at line 112 of file RPCPatternsParser.cc.

113  {
114  ifstream fin;
115  fin.open(fileName.c_str());
116  if (fin.fail()) {
117  throw RPCException("Cannot open the file" + fileName);
118  //edm::LogError("RPCTrigger") << "Cannot open the file" + fileName;
119  }
120  fin.close();
121 
122  SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
123  parser->setContentHandler(this);
124 
125  m_QualityVec.clear();
126  parser->parse(fileName.c_str());
127  delete parser;

References MillePedeFileConverter_cfg::fileName, groupFilesInBlocks::fin, and writedatasetfile::parser.

◆ startElement()

void RPCPatternsParser::startElement ( const XMLCh *const  uri,
const XMLCh *const  localname,
const XMLCh *const  qname,
const XERCES_CPP_NAMESPACE::Attributes &  attrs 
)
override

Definition at line 129 of file RPCPatternsParser.cc.

133  {
134  RPCConst rpcconst;
135 
136  m_CurrElement = xMLCh2String(localname);
137  if (m_CurrElement == "quality") {
138  //<quality id = "0" planes = "011110" val = 1/>
140 
141  quality.m_QualityTabNumber = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("id"))));
142  std::bitset<8> firedPl(xMLCh2String(attrs.getValue(Char2XMLCh("planes"))));
143  unsigned long fpUL = firedPl.to_ulong();
144  quality.m_FiredPlanes = (unsigned char)(fpUL & 0xFF);
145  //quality.m_FiredPlanes = xMLCh2String(attrs.getValue(Char2XMLCh("planes")));
146  quality.m_QualityValue = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("val"))));
147 
148  m_QualityVec.push_back(quality);
149  } else if (m_CurrElement == "pac") {
150  //<pac id ="0" m_tower = "0" logSector = "0" logSegment = "0" descr = "">
152  cone.m_Tower = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("tower"))));
153  cone.m_LogSector = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("logSector"))));
154  cone.m_LogSegment = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("logSegment"))));
155  pair<TPatternsVecsMap::iterator, bool> res =
157  if (res.second == true)
158  m_CurPacIt = res.first;
159  else
160  throw RPCException(std::string("m_PatternsVecsMap insertion failed - cone already exixsts?"));
161  //edm::LogError("RPCTrigger") << "m_PatternsVecsMap insertion failed - cone already exixsts?";
162  } else if (m_CurrElement == "pat") {
163  //<pat type="E" grp="0" qual="0" sign="0" code="31" num="0">
164  string pt = xMLCh2String(attrs.getValue(Char2XMLCh("type")));
165  if (pt == "E")
167  else if (pt == "T")
169  else
170  throw RPCException("unknown pattern type: " + pt);
171  //edm::LogError("RPCTrigger") << "unknown pattern type: " + pt;
172 
173  m_CurPattern.setRefGroup(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("grp")))));
174  m_CurPattern.setQualityTabNumber(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("qual")))));
175 
176  m_CurPattern.setSign(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("sign")))));
177  m_CurPattern.setCode(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("code")))));
178  m_CurPattern.setNumber(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("num")))));
179  } else if (m_CurrElement == "str") {
180  //<logstrip plane="m_LOGPLANE1" from="32" to="32"/>
181  int logPlane = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("Pl"))));
182  m_CurPattern.setStripFrom(logPlane, rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("f")))));
183  m_CurPattern.setStripTo(logPlane, rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("t")))) + 1);
184  }

References Char2XMLCh, RPCConst::l1RpcConeCrdnts::m_LogSector, RPCConst::l1RpcConeCrdnts::m_LogSegment, RPCConst::l1RpcConeCrdnts::m_Tower, RPCPattern::PAT_TYPE_E, RPCPattern::PAT_TYPE_T, DiDispStaMuonMonitor_cfi::pt, qcdUeDQM_cfi::quality, AlCaHLTBitMon_QueryRunRegistry::string, RPCConst::stringToInt(), and xMLCh2String().

Member Data Documentation

◆ m_CurPacIt

TPatternsVecsMap::iterator RPCPatternsParser::m_CurPacIt
private

Definition at line 71 of file RPCPatternsParser.h.

◆ m_CurPattern

RPCPattern RPCPatternsParser::m_CurPattern
private

Definition at line 73 of file RPCPatternsParser.h.

◆ m_CurrElement

std::string RPCPatternsParser::m_CurrElement
private

Definition at line 63 of file RPCPatternsParser.h.

◆ m_InstanceCount

int RPCPatternsParser::m_InstanceCount = 0
staticprivate

Definition at line 54 of file RPCPatternsParser.h.

◆ m_PatternsVecsMap

TPatternsVecsMap RPCPatternsParser::m_PatternsVecsMap
private

Definition at line 69 of file RPCPatternsParser.h.

◆ m_QualityVec

RPCPattern::TQualityVec RPCPatternsParser::m_QualityVec
private

Definition at line 65 of file RPCPatternsParser.h.

RPCPattern::setSign
void setSign(int a)
Definition: RPCPattern.cc:82
RPCConst::stringToInt
int stringToInt(std::string str)
Converts string to inteager number. If string contains chars, that are not digits,...
Definition: RPCConst.cc:255
Char2XMLCh
#define Char2XMLCh(str)
Definition: RPCPatternsParser.cc:92
RPCConst::l1RpcConeCrdnts::m_Tower
int m_Tower
Definition: RPCConst.h:119
RPCPatternsParser::m_CurPattern
RPCPattern m_CurPattern
Definition: RPCPatternsParser.h:73
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
RPCPattern::setCode
void setCode(int a)
Definition: RPCPattern.cc:80
RPCPatternsParser::m_CurPacIt
TPatternsVecsMap::iterator m_CurPacIt
Definition: RPCPatternsParser.h:71
hgcalTowerProducer_cfi.tower
tower
Definition: hgcalTowerProducer_cfi.py:4
RPCPattern::PAT_TYPE_E
static const TPatternType PAT_TYPE_E
Definition: RPCPattern.h:56
writedatasetfile.parser
parser
Definition: writedatasetfile.py:7
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
RPCPatternsParser::m_PatternsVecsMap
TPatternsVecsMap m_PatternsVecsMap
Definition: RPCPatternsParser.h:69
RPCPatternsParser::m_QualityVec
RPCPattern::TQualityVec m_QualityVec
Definition: RPCPatternsParser.h:65
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
RPCPattern::TQuality
Definition: RPCPattern.h:38
RPCConst::l1RpcConeCrdnts
The coordinates of Logic Cone: m_Tower, m_LogSector, m_LogSegment.
Definition: RPCConst.h:118
RPCPatternsParser::getPatternsVec
const RPCPattern::RPCPatVec & getPatternsVec(const RPCConst::l1RpcConeCrdnts &coneCrds) const
Definition: RPCPatternsParser.cc:44
groupFilesInBlocks.fin
fin
Definition: groupFilesInBlocks.py:94
RPCPattern::setRefGroup
void setRefGroup(int refGroup)
Definition: RPCPattern.cc:88
RPCPatternsParser::m_CurrElement
std::string m_CurrElement
Definition: RPCPatternsParser.h:63
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
RPCConst::l1RpcConeCrdnts::m_LogSegment
int m_LogSegment
Definition: RPCConst.h:121
RPCPattern::setStripTo
void setStripTo(int logPlane, int stripTo)
Definition: RPCPattern.cc:46
RPCException
Definition: RPCException.h:21
reco::JetExtendedAssociation::value_type
Container::value_type value_type
Definition: JetExtendedAssociation.h:30
RPCPattern::setPatternType
void setPatternType(TPatternType patternType)
Definition: RPCPattern.cc:86
res
Definition: Electron.h:6
xMLCh2String
string xMLCh2String(const XMLCh *ch)
Definition: RPCPatternsParser.cc:24
RPCPattern::RPCPatVec
std::vector< RPCPattern > RPCPatVec
Definition: RPCPattern.h:36
RPCPatternsParser::m_InstanceCount
static int m_InstanceCount
Definition: RPCPatternsParser.h:54
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
RPCPattern::PAT_TYPE_T
static const TPatternType PAT_TYPE_T
Definition: RPCPattern.h:55
RPCPattern::setStripFrom
void setStripFrom(int logPlane, int stripFrom)
Definition: RPCPattern.cc:44
RPCConst::l1RpcConeCrdnts::m_LogSector
int m_LogSector
Definition: RPCConst.h:120
RPCPattern::setNumber
void setNumber(int a)
Definition: RPCPattern.cc:84
cms::concurrency::xercesInitialize
void xercesInitialize()
Definition: Xerces.cc:18
RPCPattern::setQualityTabNumber
void setQualityTabNumber(int qualityTabNumber)
Definition: RPCPattern.cc:90
RPCConst
Definition: RPCConst.h:23