CMS 3D CMS Logo

SiStripFakeAPVParameters.h
Go to the documentation of this file.
5 
10 public:
11  using index = std::pair<int, int>;
12 
14 
17  const int layersTIB = 4;
18  const int ringsTID = 3;
19  const int layersTOB = 6;
20  const int ringsTEC = 7;
21 
23  pset.getParameter<std::vector<double>>(parameterName + "TIB"), int(StripSubdetector::TIB), layersTIB);
25  pset.getParameter<std::vector<double>>(parameterName + "TID"), int(StripSubdetector::TID), ringsTID);
27  pset.getParameter<std::vector<double>>(parameterName + "TOB"), int(StripSubdetector::TOB), layersTOB);
29  pset.getParameter<std::vector<double>>(parameterName + "TEC"), int(StripSubdetector::TEC), ringsTEC);
30  }
31 
32  inline double get(const index& idx) const { return m_data.at(idx.first)[idx.second]; }
33 
34  static index getIndex(const TrackerTopology* tTopo, DetId id) {
35  int layerId{0};
36  const int subId = StripSubdetector(id).subdetId();
37  switch (subId) {
39  layerId = tTopo->tibLayer(id) - 1;
40  break;
42  layerId = tTopo->tobLayer(id) - 1;
43  break;
45  layerId = tTopo->tidRing(id) - 1;
46  break;
48  layerId = tTopo->tecRing(id) - 1;
49  break;
50  default:
51  break;
52  }
53  return std::make_pair(subId, layerId);
54  }
55 
56 private:
57  using LayerParameters = std::vector<double>;
58  using SubdetParameters = std::map<int, LayerParameters>;
60 
68  void fillSubDetParameter(const std::vector<double>& v, const int subDet, const unsigned short layers) {
69  if (v.size() == layers) {
70  m_data.insert(std::make_pair(subDet, v));
71  } else if (v.size() == 1) {
72  LayerParameters parV(layers, v[0]);
73  m_data.insert(std::make_pair(subDet, parV));
74  } else {
75  throw cms::Exception("Configuration") << "ERROR: number of parameters for subDet " << subDet << " are "
76  << v.size() << ". They must be either 1 or " << layers << std::endl;
77  }
78  }
79 };
static constexpr auto TEC
unsigned int tobLayer(const DetId &id) const
std::vector< double > LayerParameters
static index getIndex(const TrackerTopology *tTopo, DetId id)
unsigned int tecRing(const DetId &id) const
ring id
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
static constexpr auto TOB
Definition: DetId.h:17
static constexpr auto TIB
void fillSubDetParameter(const std::vector< double > &v, const int subDet, const unsigned short layers)
unsigned int tidRing(const DetId &id) const
std::map< int, LayerParameters > SubdetParameters
unsigned int tibLayer(const DetId &id) const
SiStripFakeAPVParameters(const edm::ParameterSet &pset, const std::string &parameterName)
Fills the parameters read from cfg and matching the name in the map.
static constexpr auto TID