CMS 3D CMS Logo

GeometricDet.h
Go to the documentation of this file.
1 #ifndef Geometry_TrackerNumberingBuilder_GeometricDet_H
2 #define Geometry_TrackerNumberingBuilder_GeometricDet_H
3 
10 #include <Math/Rotation3D.h>
11 #include <Math/Vector3D.h>
12 
13 #include <vector>
14 #include <memory>
16 
17 #include <ext/pool_allocator.h>
18 
19 class DDFilteredView;
20 
21 namespace cms {
22  class DDFilteredView;
23 }
24 
30 class GeometricDet {
31 public:
33  using ConstGeometricDetContainer = std::vector<GeometricDet const*>;
34  using GeometricDetContainer = std::vector<GeometricDet*>;
35  using RotationMatrix = ROOT::Math::Rotation3D;
36  using Translation = ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<double> >;
37 
38 #ifdef PoolAlloc
39  using GeoHistory = std::vector<DDExpandedNode, PoolAlloc<DDExpandedNode> >;
40  using nav_type = std::vector<int, PoolAlloc<int> >;
41 #else
42  using GeoHistory = std::vector<DDExpandedNode>;
44 #endif
45 
48 
49  //
50  // more can be added; please add at the end!
51  //
52  typedef enum GDEnumType {
53  unknown = 100,
54  Tracker = 0,
56  PixelEndCap = 2,
57  TIB = 3,
58  TID = 4,
59  TOB = 5,
60  TEC = 6,
61  layer = 8,
62  wheel = 9,
63  strng = 10,
64  rod = 11,
65  petal = 12,
66  ring = 13,
67  ladder = 14,
68  mergedDet = 15,
69  DetUnit = 16,
70  disk = 17,
71  panel = 18,
72  PixelPhase1Barrel = 101,
73  PixelPhase1EndCap = 102,
74  PixelPhase1Disk = 117,
75  OTPhase2EndCap = 204,
76  OTPhase2Barrel = 205,
77  OTPhase2Layer = 208,
78  OTPhase2Stack = 215,
79  PixelPhase2Barrel = 201,
80  PixelPhase2EndCap = 202,
81  OTPhase2Wheel = 209,
82  PixelPhase2FullDisk = 217,
83  PixelPhase2ReducedDisk = 227,
84  PixelPhase2TDRDisk = 237
86 
93 
97  void setGeographicalID(DetId id) { _geographicalID = id; }
98  void addComponents(GeometricDetContainer const& cont);
99  void addComponents(ConstGeometricDetContainer const& cont);
100  void addComponent(GeometricDet*);
104  void clearComponents() { _container.clear(); }
105 
110  void deleteComponents();
111 
112  bool isLeaf() const { return _container.empty(); }
113 
114  GeometricDet* component(size_t index) { return const_cast<GeometricDet*>(_container[index]); }
115 
119  RotationMatrix const& rotation() const { return _rot; }
120  Translation const& translation() const { return _trans; }
121  double phi() const { return _phi; }
122  double rho() const { return _rho; }
123 
124  DDSolidShape const& shape() const { return _shape; }
125  GeometricEnumType type() const { return _type; }
126  std::string const& name() const { return _ddname; }
127 
128  // internal representaion
129  nav_type const& navType() const { return _ddd; }
130  NavRange navpos() const { return NavRange(&_ddd.front(), _ddd.size()); }
131  std::vector<double> const& params() const { return _params; }
132 
133  ~GeometricDet();
134 
139  ConstGeometricDetContainer& components() { return _container; }
140  ConstGeometricDetContainer const& components() const { return _container; }
141 
147  ConstGeometricDetContainer deepComponents() const;
148  void deepComponents(ConstGeometricDetContainer& cont) const;
149 
153  DetId geographicalID() const { return _geographicalID; }
154  DetId geographicalId() const { return _geographicalID; }
155 
159  Position positionBounds() const;
160 
164  Rotation rotationBounds() const;
165 
169  std::unique_ptr<Bounds> bounds() const;
170 
171  double radLength() const { return _radLength; }
172  double xi() const { return _xi; }
176  double pixROCRows() const { return _pixROCRows; }
177  double pixROCCols() const { return _pixROCCols; }
178  double pixROCx() const { return _pixROCx; }
179  double pixROCy() const { return _pixROCy; }
180 
184  bool stereo() const { return _stereo; }
185  double siliconAPVNum() const { return _siliconAPVNum; }
186 
187 private:
190  double _phi;
191  double _rho;
197  std::vector<double> _params;
198 
200  double _radLength;
201  double _xi;
202  double _pixROCRows;
203  double _pixROCCols;
204  double _pixROCx;
205  double _pixROCy;
206  bool _stereo;
208 };
209 
210 #undef PoolAlloc
211 #endif
ConstGeometricDetContainer _container
Definition: GeometricDet.h:188
std::vector< GeometricDet * > GeometricDetContainer
Definition: GeometricDet.h:34
double pixROCy() const
Definition: GeometricDet.h:179
double _pixROCCols
Definition: GeometricDet.h:203
double radLength() const
Definition: GeometricDet.h:171
double _pixROCRows
Definition: GeometricDet.h:202
nav_type const & navType() const
Definition: GeometricDet.h:129
double _pixROCy
Definition: GeometricDet.h:205
void clearComponents()
Definition: GeometricDet.h:104
DDSolidShape const & shape() const
Definition: GeometricDet.h:124
double _siliconAPVNum
Definition: GeometricDet.h:207
void setGeographicalID(DetId id)
Definition: GeometricDet.h:97
bool isLeaf() const
Definition: GeometricDet.h:112
GeometricEnumType _type
Definition: GeometricDet.h:196
DetId geographicalID() const
Definition: GeometricDet.h:153
Translation const & translation() const
Definition: GeometricDet.h:120
double _pixROCx
Definition: GeometricDet.h:204
std::pair< int const *, size_t > NavRange
enum GeometricDet::GDEnumType GeometricEnumType
nav_type _ddd
Definition: GeometricDet.h:194
ConstGeometricDetContainer & components()
Definition: GeometricDet.h:139
std::vector< double > const & params() const
Definition: GeometricDet.h:131
Translation _trans
Definition: GeometricDet.h:189
std::string const & name() const
Definition: GeometricDet.h:126
RotationMatrix _rot
Definition: GeometricDet.h:192
std::vector< double > _params
Definition: GeometricDet.h:197
double pixROCCols() const
Definition: GeometricDet.h:177
GeometricDet * component(size_t index)
Definition: GeometricDet.h:114
std::vector< GeometricDet const * > ConstGeometricDetContainer
Definition: GeometricDet.h:33
std::string _ddname
Definition: GeometricDet.h:195
DetId _geographicalID
Definition: GeometricDet.h:199
Point3DBase< float, GlobalTag > PositionType
std::vector< DDExpandedNode > GeoHistory
Definition: GeometricDet.h:42
Namespace of DDCMS conversion namespace.
DDSolidShape _shape
Definition: GeometricDet.h:193
Definition: DetId.h:17
ConstGeometricDetContainer const & components() const
Definition: GeometricDet.h:140
double xi() const
Definition: GeometricDet.h:172
DDSolidShape
Definition: DDSolidShapes.h:6
DetId geographicalId() const
Definition: GeometricDet.h:154
DDExpandedView::nav_type nav_type
Definition: GeometricDet.h:43
double pixROCx() const
Definition: GeometricDet.h:178
double _radLength
Definition: GeometricDet.h:200
NavRange navpos() const
Definition: GeometricDet.h:130
double phi() const
Definition: GeometricDet.h:121
TkRotation< float > RotationType
ROOT::Math::Rotation3D RotationMatrix
Definition: GeometricDet.h:35
RotationMatrix const & rotation() const
Definition: GeometricDet.h:119
double siliconAPVNum() const
Definition: GeometricDet.h:185
bool stereo() const
Definition: GeometricDet.h:184
double pixROCRows() const
Definition: GeometricDet.h:176
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > Translation
Definition: GeometricDet.h:36
GeometricEnumType type() const
Definition: GeometricDet.h:125
cont
load Luminosity info ##
Definition: generateEDF.py:629
DDExpandedView::NavRange NavRange
Definition: GeometricDet.h:32
double rho() const
Definition: GeometricDet.h:122
std::vector< int > nav_type
std::vector of sibling numbers