CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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)
 
const RPCPattern::RPCPatVecgetPatternsVec (const RPCConst::l1RpcConeCrdnts &coneCrds) const
 
const RPCPattern::RPCPatVecgetPatternsVec (const int tower, const int sc, const int sg) 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 Attributes &attrs)
 
 ~RPCPatternsParser ()
 

Private Types

typedef std::map
< RPCConst::l1RpcConeCrdnts,
RPCPattern::RPCPatVec
TPatternsVecsMap
 

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 22 of file RPCPatternsParser.h.

Member Typedef Documentation

Definition at line 66 of file RPCPatternsParser.h.

Constructor & Destructor Documentation

RPCPatternsParser::RPCPatternsParser ( )

Definition at line 108 of file RPCPatternsParser.cc.

References xMLCh2String().

109 {
110  if(m_InstanceCount == 0) {
111  try {
112  XMLPlatformUtils::Initialize();
113  //XPathEvaluator::initialize();
114  m_InstanceCount++;
115  }
116  catch(const XMLException &toCatch) {
117  throw RPCException("Error during Xerces-c Initialization: "
118  + xMLCh2String(toCatch.getMessage()));
119  //edm::LogError("RPCTrigger")<< "Error during Xerces-c Initialization: "
120  // + xMLCh2String(toCatch.getMessage());
121  }
122  }
123 }
string xMLCh2String(const XMLCh *ch)
static int m_InstanceCount
RPCPatternsParser::~RPCPatternsParser ( )

Definition at line 127 of file RPCPatternsParser.cc.

127  {
128 }

Member Function Documentation

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

Definition at line 209 of file RPCPatternsParser.cc.

References xMLCh2String().

209  {
210  string element = xMLCh2String(localname);
211  if(element == "pat") {
212  m_CurPacIt->second.push_back(m_CurPattern);
213  }
214 }
string xMLCh2String(const XMLCh *ch)
TPatternsVecsMap::iterator m_CurPacIt
const RPCPattern::RPCPatVec & RPCPatternsParser::getPatternsVec ( const RPCConst::l1RpcConeCrdnts coneCrds) const

Definition at line 43 of file RPCPatternsParser.cc.

References RPCConst::l1RpcConeCrdnts::m_LogSector, RPCConst::l1RpcConeCrdnts::m_LogSegment, and RPCConst::l1RpcConeCrdnts::m_Tower.

Referenced by RPCPacData::init(), and RPCTriggerConfig::produce().

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

Definition at line 55 of file RPCPatternsParser.cc.

55  {
56 
57  RPCConst::l1RpcConeCrdnts cords(tower,sc,sg);
58 
59  return getPatternsVec(cords);
60 
61 }
The coordinates of Logic Cone: m_Tower, m_LogSector, m_LogSegment.
Definition: RPCConst.h:119
const RPCPattern::RPCPatVec & getPatternsVec(const RPCConst::l1RpcConeCrdnts &coneCrds) const
const RPCPattern::TQualityVec& RPCPatternsParser::getQualityVec ( ) const
inline

Definition at line 50 of file RPCPatternsParser.h.

References m_QualityVec.

Referenced by RPCPacData::init(), and RPCTriggerConfig::produce().

50  { //XXX - clean me!
51  return m_QualityVec;
52  };
RPCPattern::TQualityVec m_QualityVec
void RPCPatternsParser::parse ( std::string  fileName)

Definition at line 130 of file RPCPatternsParser.cc.

References groupFilesInBlocks::fin, and geometryXMLtoCSV::parser.

Referenced by RPCTriggerConfig::produce(), and RPCPacData::RPCPacData().

131 {
132  ifstream fin;
133  fin.open(fileName.c_str());
134  if(fin.fail()) {
135  throw RPCException("Cannot open the file" + fileName);
136  //edm::LogError("RPCTrigger") << "Cannot open the file" + fileName;
137  }
138  fin.close();
139 
140  SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
141  parser->setContentHandler(this);
142 
143  m_QualityVec.clear();
144  parser->parse(fileName.c_str());
145  delete parser;
146 }
RPCPattern::TQualityVec m_QualityVec
void RPCPatternsParser::startElement ( const XMLCh *const  uri,
const XMLCh *const  localname,
const XMLCh *const  qname,
const Attributes &  attrs 
)

Definition at line 148 of file RPCPatternsParser.cc.

References Char2XMLCh, RPCPattern::TQuality::m_FiredPlanes, RPCConst::l1RpcConeCrdnts::m_LogSector, RPCConst::l1RpcConeCrdnts::m_LogSegment, RPCPattern::TQuality::m_QualityTabNumber, RPCPattern::TQuality::m_QualityValue, RPCConst::l1RpcConeCrdnts::m_Tower, RPCPattern::PAT_TYPE_E, RPCPattern::PAT_TYPE_T, RPCConst::stringToInt(), and xMLCh2String().

151  {
152  RPCConst rpcconst;
153 
154  m_CurrElement = xMLCh2String(localname);
155  if(m_CurrElement == "quality") {
156  //<quality id = "0" planes = "011110" val = 1/>
157  RPCPattern::TQuality quality;
158 
159 
160  quality.m_QualityTabNumber = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("id"))));
161  std::bitset<8> firedPl( xMLCh2String(attrs.getValue(Char2XMLCh("planes")) )) ;
162  unsigned long fpUL = firedPl.to_ulong();
163  quality.m_FiredPlanes = (unsigned char) (fpUL & 0xFF );
164  //quality.m_FiredPlanes = xMLCh2String(attrs.getValue(Char2XMLCh("planes")));
165  quality.m_QualityValue = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("val"))));
166 
167  m_QualityVec.push_back(quality);
168  }
169  else if(m_CurrElement == "pac") {
170  //<pac id ="0" m_tower = "0" logSector = "0" logSegment = "0" descr = "">
172  cone.m_Tower = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("tower"))));
173  cone.m_LogSector = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("logSector"))));
174  cone.m_LogSegment = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("logSegment"))));
175  pair <TPatternsVecsMap::iterator, bool> res = m_PatternsVecsMap.insert(TPatternsVecsMap::value_type(cone,
177  if(res.second == true)
178  m_CurPacIt = res.first;
179  else
180  throw RPCException( std::string("m_PatternsVecsMap insertion failed - cone already exixsts?"));
181  //edm::LogError("RPCTrigger") << "m_PatternsVecsMap insertion failed - cone already exixsts?";
182  }
183  else if(m_CurrElement == "pat") {
184  //<pat type="E" grp="0" qual="0" sign="0" code="31" num="0">
185  string pt = xMLCh2String(attrs.getValue(Char2XMLCh("type")));
186  if(pt == "E")
188  else if(pt == "T")
190  else
191  throw RPCException("unknown pattern type: " + pt);
192  //edm::LogError("RPCTrigger") << "unknown pattern type: " + pt;
193 
194  m_CurPattern.setRefGroup(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("grp")))));
195  m_CurPattern.setQualityTabNumber(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("qual")))));
196 
197  m_CurPattern.setSign(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("sign")))));
198  m_CurPattern.setCode(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("code")))));
199  m_CurPattern.setNumber(rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("num")))));
200  }
201  else if(m_CurrElement == "str") {
202  //<logstrip plane="m_LOGPLANE1" from="32" to="32"/>
203  int logPlane = rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("Pl"))));
204  m_CurPattern.setStripFrom(logPlane, rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("f")))));
205  m_CurPattern.setStripTo(logPlane, rpcconst.stringToInt(xMLCh2String(attrs.getValue(Char2XMLCh("t")))) + 1);
206  }
207 }
void setRefGroup(int refGroup)
Definition: RPCPattern.cc:91
string xMLCh2String(const XMLCh *ch)
void setStripTo(int logPlane, int stripTo)
Definition: RPCPattern.cc:49
The coordinates of Logic Cone: m_Tower, m_LogSector, m_LogSegment.
Definition: RPCConst.h:119
void setPatternType(TPatternType patternType)
Definition: RPCPattern.cc:89
TPatternsVecsMap::iterator m_CurPacIt
void setStripFrom(int logPlane, int stripFrom)
Definition: RPCPattern.cc:45
RPCPattern::TQualityVec m_QualityVec
#define Char2XMLCh(str)
static const TPatternType PAT_TYPE_T
Definition: RPCPattern.h:51
unsigned char m_FiredPlanes
Definition: RPCPattern.h:35
std::vector< RPCPattern > RPCPatVec
Definition: RPCPattern.h:32
TPatternsVecsMap m_PatternsVecsMap
void setNumber(int a)
Definition: RPCPattern.cc:87
void setQualityTabNumber(int qualityTabNumber)
Definition: RPCPattern.cc:93
std::string m_CurrElement
Container::value_type value_type
static const TPatternType PAT_TYPE_E
Definition: RPCPattern.h:52
void setSign(int a)
Definition: RPCPattern.cc:85
void setCode(int a)
Definition: RPCPattern.cc:83
int stringToInt(std::string str)
Converts string to inteager number. If string contains chars, that are not digits, throws RPCException.
Definition: RPCConst.cc:243

Member Data Documentation

TPatternsVecsMap::iterator RPCPatternsParser::m_CurPacIt
private

Definition at line 70 of file RPCPatternsParser.h.

RPCPattern RPCPatternsParser::m_CurPattern
private

Definition at line 72 of file RPCPatternsParser.h.

std::string RPCPatternsParser::m_CurrElement
private

Definition at line 62 of file RPCPatternsParser.h.

int RPCPatternsParser::m_InstanceCount = 0
staticprivate

Definition at line 52 of file RPCPatternsParser.h.

TPatternsVecsMap RPCPatternsParser::m_PatternsVecsMap
private

Definition at line 68 of file RPCPatternsParser.h.

RPCPattern::TQualityVec RPCPatternsParser::m_QualityVec
private

Definition at line 64 of file RPCPatternsParser.h.

Referenced by getQualityVec().