HGCal Test Beam  03a93d6239a951948e06fb3ef8dae4cbdebfad30
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
HGCCellMap.h
Go to the documentation of this file.
1 #ifndef HGCCELLMAP_H
2 #define HGCCELLMAP_H
3 /** \class
4 
5  \author Harrison B. Prosper
6  map from sim cell id to (u,v) coordinates
7  and from (u,v) to (x, y) coordinates assuming
8  cell is centered at (0, 0).
9  */
10 #include <map>
11 #include <string>
12 #include <vector>
13 #include "TH2Poly.h"
14 #include "HGCal/DataFormats/interface/HGCalTBDetId.h"
15 #include "HGCal/TBStandaloneSimulator/interface/HGCSSGeometryConversion.hh"
16 
18 {
19 public:
20  struct Cell {
21  int skiroc;
22  int channel;
23  int celltype;
24  int posid;
25  int u;
26  int v;
27  double x;
28  double y;
29  double z;
30  double count;
32  {
33  // SKIROC 2 occurs before SKIROC 1
34  int ski = skiroc % 2;
35  int o_ski = o.skiroc % 2;
36  int lhs = 64 * ski + channel;
37  int rhs = 64 * o_ski + o.channel;
38  return lhs < rhs;
39  }
40  };
41  HGCCellMap(std::string inputFilename = "");
42  virtual ~HGCCellMap();
43 
44  std::pair<int, int> operator()(size_t cellid);
45  std::pair<double, double> operator()(std::pair<int, int>& uv);
46  std::pair<double, double> uv2xy(int u, int v);
47  std::pair<int, int> xy2uv(double x, double y);
48  int posid(int u, int v);
49 
50  std::pair<int, int> uv2eid(int layer,
51  int sensor_u, int sensor_v,
52  int u, int v);
53  int celltype(int layer,
54  int sensor_u, int sensor_v,
55  int u, int v);
56 
57  std::vector<HGCCellMap::Cell> cells(int layer = 1,
58  int sensor_u = 0,
59  int sensor_v = 0);
60  TH2Poly* honeycomb() { return _map; }
61 private:
62  std::map<size_t, std::pair<int, int> > _uvmap;
63  std::map<std::pair<int, int>, int> _posid;
64  std::map<std::pair<int, int>, std::pair<double, double> > _xymap;
65 
66  std::map<uint32_t, int> _celltype;
67  std::map<uint32_t, std::pair<int, int> > _eidmap;
68  std::map<uint32_t, std::vector<HGCCellMap::Cell> > _cells;
69 
70  HGCSSGeometryConversion _geom;
71  TH2Poly* _map;
72 };
73 
74 #endif
bool operator<(HGCCellMap::Cell &o)
Definition: HGCCellMap.h:31
HGCCellMap(std::string inputFilename="")
Definition: HGCCellMap.cc:26
std::pair< int, int > uv2eid(int layer, int sensor_u, int sensor_v, int u, int v)
Definition: HGCCellMap.cc:145
std::vector< HGCCellMap::Cell > cells(int layer=1, int sensor_u=0, int sensor_v=0)
Definition: HGCCellMap.cc:107
virtual ~HGCCellMap()
Definition: HGCCellMap.cc:102
int posid(int u, int v)
Definition: HGCCellMap.cc:174
std::pair< int, int > operator()(size_t cellid)
Definition: HGCCellMap.cc:119
std::pair< double, double > uv2xy(int u, int v)
Definition: HGCCellMap.cc:135
std::pair< int, int > xy2uv(double x, double y)
Definition: HGCCellMap.cc:156
TH2Poly * honeycomb()
Definition: HGCCellMap.h:60
int celltype(int layer, int sensor_u, int sensor_v, int u, int v)
Definition: HGCCellMap.cc:163