CMS 3D CMS Logo

CondDBCmsMTDConstruction.cc
Go to the documentation of this file.
9 
10 using namespace cms;
11 
12 std::unique_ptr<GeometricTimingDet> CondDBCmsMTDConstruction::construct(const PGeometricTimingDet& pgd) {
13  auto mtd = std::make_unique<GeometricTimingDet>(pgd.pgeomdets_[0], GeometricTimingDet::MTD);
14 
15  size_t detMax = pgd.pgeomdets_.size();
16  size_t tri = 1;
17  std::vector<GeometricTimingDet*> hier;
18  int lev = 1;
19  GeometricTimingDet* subdet = mtd.get();
20  hier.emplace_back(subdet);
21  while (tri < detMax && pgd.pgeomdets_[tri].level_ == 1) {
22  subdet = new GeometricTimingDet(pgd.pgeomdets_[tri], GeometricTimingDet::GTDEnumType(pgd.pgeomdets_[tri].type_));
23  ++tri;
24  hier.back()->addComponent(subdet);
25  hier.emplace_back(subdet);
26  ++lev;
27  while (tri < detMax && pgd.pgeomdets_[tri].level_ == 2) {
28  subdet = new GeometricTimingDet(pgd.pgeomdets_[tri], GeometricTimingDet::GTDEnumType(pgd.pgeomdets_[tri].type_));
29  ++tri;
30  hier.back()->addComponent(subdet);
31  hier.emplace_back(subdet);
32  ++lev;
33  while (tri < detMax && pgd.pgeomdets_[tri].level_ == 3) {
34  subdet =
36  ++tri;
37  hier.back()->addComponent(subdet);
38  hier.emplace_back(subdet);
39  ++lev;
40  while (tri < detMax && pgd.pgeomdets_[tri].level_ == 4) {
41  subdet =
43  ++tri;
44  hier.back()->addComponent(subdet);
45  hier.emplace_back(subdet);
46  ++lev;
47  while (tri < detMax && pgd.pgeomdets_[tri].level_ == 5) {
48  subdet =
50  ++tri;
51  hier.back()->addComponent(subdet);
52  hier.emplace_back(subdet);
53  ++lev;
54  while (tri < detMax && pgd.pgeomdets_[tri].level_ == 6) {
55  subdet = new GeometricTimingDet(pgd.pgeomdets_[tri],
57  ++tri;
58  hier.back()->addComponent(subdet);
59  }
60  --lev;
61  hier.pop_back();
62  }
63  --lev;
64  hier.pop_back();
65  }
66  --lev;
67  hier.pop_back();
68  }
69  --lev;
70  hier.pop_back();
71  }
72  --lev;
73  hier.pop_back();
74  }
75  return mtd;
76 }
std::vector< Item > pgeomdets_
Namespace of DDCMS conversion namespace.
static std::unique_ptr< GeometricTimingDet > construct(const PGeometricTimingDet &pgd)