CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ME0GeometryBuilderFromCondDB.cc
Go to the documentation of this file.
1 
8 
12 
16 
19 
21 
23 
24 #include <iostream>
25 #include <algorithm>
26 
27 using namespace geant_units::operators;
28 
30 
32 
34  const std::vector<DetId>& detids(rgeo.detIds());
36 
38  std::vector<double>::const_iterator tranStart;
39  std::vector<double>::const_iterator shapeStart;
40  std::vector<double>::const_iterator rotStart;
41  std::vector<std::string>::const_iterator strStart;
42 
43  for (unsigned int id = 0; id < detids.size(); ++id) {
44  ME0DetId me0id(detids[id]);
45 
46  tranStart = rgeo.tranStart(id);
47  shapeStart = rgeo.shapeStart(id);
48  rotStart = rgeo.rotStart(id);
49  strStart = rgeo.strStart(id);
50  name = *(strStart);
51 
53  convertMmToCm(*(tranStart)), convertMmToCm(*(tranStart + 1)), convertMmToCm(*(tranStart + 2)));
54  Surface::RotationType rot(*(rotStart + 0),
55  *(rotStart + 1),
56  *(rotStart + 2),
57  *(rotStart + 3),
58  *(rotStart + 4),
59  *(rotStart + 5),
60  *(rotStart + 6),
61  *(rotStart + 7),
62  *(rotStart + 8));
63 
64  Bounds* bounds = nullptr;
65  float be = convertMmToCm(*(shapeStart + 0));
66  float te = convertMmToCm(*(shapeStart + 1));
67  float ap = convertMmToCm(*(shapeStart + 2));
68  float ti = convertMmToCm(*(shapeStart + 3));
69  float nstrip = *(shapeStart + 4);
70  float npad = *(shapeStart + 5);
71  // TrapezoidalPlaneBounds*
72  bounds = new TrapezoidalPlaneBounds(be, te, ap, ti);
73 
74  std::vector<float> pars;
75  pars.emplace_back(be); //b/2;
76  pars.emplace_back(te); //B/2;
77  pars.emplace_back(ap); //h/2;
78  pars.emplace_back(nstrip);
79  pars.emplace_back(npad);
80 
82 
83  //Change of axes for the forward
84  Basic3DVector<float> newX(1., 0., 0.);
85  Basic3DVector<float> newY(0., 0., 1.);
86  // if (tran[2] > 0. )
87  newY *= -1;
88  Basic3DVector<float> newZ(0., 1., 0.);
89  rot.rotateAxes(newX, newY, newZ);
90 
91  BoundPlane* bp = new BoundPlane(pos, rot, bounds);
93  ME0EtaPartition* mep = new ME0EtaPartition(me0id, surf, e_p_specs);
94  geometry->add(mep);
95  }
96  return geometry;
97 }
uint16_t *__restrict__ id
Plane BoundPlane
Definition: Plane.h:94
std::vector< double >::const_iterator rotStart(size_t ind) const
TkRotation & rotateAxes(const Basic3DVector< T > &newX, const Basic3DVector< T > &newY, const Basic3DVector< T > &newZ)
std::vector< std::string >::const_iterator strStart(size_t ind) const
std::vector< double >::const_iterator tranStart(size_t ind) const
const std::vector< DetId > & detIds() const
ME0Geometry * build(const RecoIdealGeometry &rgeo)
std::vector< double >::const_iterator shapeStart(size_t ind) const
constexpr NumType convertMmToCm(NumType millimeters)
Definition: GeantUnits.h:63
Definition: Bounds.h:18