12 #include "CLHEP/Units/GlobalSystemOfUnits.h"
21 const std::vector<DetId>& detids(rgeo.
detIds());
22 std::unordered_map<uint32_t, GEMSuperChamber*> superChambers;
23 std::unordered_map<uint32_t, GEMChamber*>
chambers;
24 std::unordered_map<uint32_t, GEMEtaPartition*>
partitions;
26 for (
unsigned int id = 0;
id < detids.size(); ++
id) {
28 LogDebug(
"GEMGeometryBuilderFromDDD") <<
"GEMGeometryBuilderFromDDD adding " << gemid << std::endl;
29 if (gemid.
roll() == 0) {
30 if (gemid.
layer() == 0) {
32 superChambers.emplace(gemid.
rawId(), gsc);
46 if (superChambers.empty()) {
47 for (
unsigned int id = 0;
id < detids.size(); ++
id) {
49 if (gemid.
roll() == 1) {
52 if (gemid.
layer() == 1) {
62 for (
int re = -1; re <= 1; re = re + 2) {
71 for (
int ri = 1; ri <= 1; ++ri) {
74 for (
auto sch : superChambers) {
75 auto superChamber = sch.second;
76 const GEMDetId scId(superChamber->id());
77 if (scId.region() != re || scId.station() != st || scId.ring() != ri)
82 const GEMDetId chId(re, ri, st, ly, ch, 0);
86 auto chamber = chamberIt->second;
89 const GEMDetId rollId(re, ri, st, ly, ch, roll);
93 auto gep = gepIt->second;
103 LogDebug(
"GEMGeometryBuilderFromDDD") <<
"Adding super chamber " << scId <<
" to ring: " << std::endl;
104 ring->add(superChamber);
105 theGeometry.
add(superChamber);
108 if (
ring->nSuperChambers()) {
109 LogDebug(
"GEMGeometryBuilderFromDDD") <<
"Adding ring " << ri <<
" to station "
110 <<
"re " << re <<
" st " << st << std::endl;
119 LogDebug(
"GEMGeometryBuilderFromDDD") <<
"Adding station " << st <<
" to region " << re << std::endl;
127 LogDebug(
"GEMGeometryBuilderFromDDD") <<
"Adding region " << re <<
" to the geometry " << std::endl;
135 LogDebug(
"GEMGeometryBuilderFromCondDB") <<
"buildSuperChamber " << detId << std::endl;
146 LogDebug(
"GEMGeometryBuilderFromCondDB") <<
"buildChamber " << detId << std::endl;
157 std::vector<std::string>::const_iterator strStart = rgeo.
strStart(gid);
159 LogDebug(
"GEMGeometryBuilderFromCondDB") <<
"buildEtaPartition " <<
name <<
" " << detId << std::endl;
161 std::vector<double>::const_iterator shapeStart = rgeo.
shapeStart(gid);
162 float be = *(shapeStart + 0) / cm;
163 float te = *(shapeStart + 1) / cm;
164 float ap = *(shapeStart + 2) / cm;
165 float ti = *(shapeStart + 3) / cm;
166 float nstrip = *(shapeStart + 4);
167 float npad = *(shapeStart + 5);
169 std::vector<float> pars;
170 pars.emplace_back(
be);
171 pars.emplace_back(te);
172 pars.emplace_back(ap);
173 pars.emplace_back(nstrip);
174 pars.emplace_back(
npad);
179 LogDebug(
"GEMGeometryBuilderFromCondDB") <<
"size " <<
be <<
" " << te <<
" " << ap <<
" " << ti << std::endl;
187 std::vector<double>::const_iterator shapeStart = rgeo.
shapeStart(gid);
188 float be = *(shapeStart + 0) / cm;
189 float te = *(shapeStart + 1) / cm;
190 float ap = *(shapeStart + 2) / cm;
191 float ti = *(shapeStart + 3) / cm;
194 std::vector<double>::const_iterator tranStart = rgeo.
tranStart(gid);
197 std::vector<double>::const_iterator rotStart = rgeo.
rotStart(gid);