CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
HcalTopologyRestrictionParser.cc
Go to the documentation of this file.
2 #include <boost/tokenizer.hpp>
3 #include <sstream>
4 #include <iostream>
6 
8  if (item == "HB")
9  return HcalBarrel;
10  if (item == "HE")
11  return HcalEndcap;
12  if (item == "HF")
13  return HcalForward;
14  if (item == "HO")
15  return HcalOuter;
16  return (HcalSubdetector)0;
17 }
18 
20  std::ostringstream errors;
21  boost::char_separator<char> sep(" \t", ";");
22  typedef boost::tokenizer<boost::char_separator<char> > myTokType;
23 
24  std::string totaline(line);
25  totaline += ';'; // terminate
26  myTokType tok(totaline, sep);
27  int ieta1 = 0, ieta2 = 0, iphi1 = -1, iphi2 = -1, depth1 = 1, depth2 = 4;
28  HcalSubdetector subdet = (HcalSubdetector)0;
29 
30  int phase = 0;
31  for (myTokType::iterator beg = tok.begin(); beg != tok.end() && phase >= 0; ++beg) {
32  std::cout << phase << " : <" << *beg << ">\n";
33  if (*beg == ";") {
34  if (phase == 0)
35  continue; // empty
36  if (phase != 1 && phase != 5 && phase != 7) {
37  errors << "Expect 1, 5, or 7 arguments, got " << phase;
38  phase = -1;
39  } else {
40  if (phase == 1) { // reject whole subdetector...
42  } else {
43  target_.exclude(subdet, ieta1, ieta2, iphi1, iphi2, depth1, depth2);
44  }
45  phase = 0;
46  }
47  } else {
48  switch (phase) {
49  case (0):
50  subdet = determineSubdet(*beg);
51  break;
52  case (1):
53  ieta1 = atoi(beg->c_str());
54  break;
55  case (2):
56  ieta2 = atoi(beg->c_str());
57  break;
58  case (3):
59  iphi1 = atoi(beg->c_str());
60  break;
61  case (4):
62  iphi2 = atoi(beg->c_str());
63  depth1 = 1;
64  depth2 = 4;
65  break; // also set defaults...
66  case (5):
67  depth1 = atoi(beg->c_str());
68  break;
69  case (6):
70  depth2 = atoi(beg->c_str());
71  break;
72  }
73  phase++;
74  }
75  }
76 
77  return errors.str();
78 }
void excludeSubdetector(HcalSubdetector subdet)
std::string parse(const std::string &line)
static HcalSubdetector determineSubdet(const std::string &item)
void exclude(const HcalDetId &id)
HcalSubdetector
Definition: HcalAssistant.h:31
HcalTopologyRestrictionParser(HcalTopology &target)
tuple cout
Definition: gather_cfg.py:144