242 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalParametersFromDD (DD4Hep)::build called with "
243 <<
"names " <<
name <<
":" << namew <<
":" << namec <<
":" << namet;
248 std::vector<std::string> tempS;
249 std::vector<double> tempD;
250 bool ok = fv.firstChild();
251 tempS = fv.get<std::vector<std::string> >(
name2,
"GeometryMode");
253 tempS = fv.get<std::vector<std::string> >(
name,
"GeometryMode");
254 std::string sv = (!tempS.empty()) ? tempS[0] :
"HGCalGeometryMode::Hexagon8Full";
258 php.
mode_ = getGeometryMode(
sv);
268 std::unique_ptr<HGCalGeomParameters>
geom = std::make_unique<HGCalGeomParameters>();
270 tempS = fv.get<std::vector<std::string> >(namet,
"WaferMode");
271 std::string sv2 = (!tempS.empty()) ? tempS[0] :
"HGCalGeometryMode::Polyhedra";
272 mode = getGeometryWaferMode(sv2);
282 tempD = fv.get<std::vector<double> >(
name,
"LevelZSide");
286 tempD = fv.get<std::vector<double> >(
name,
"FirstMixedLayer");
288 tempD = fv.get<std::vector<double> >(
name,
"DetectorType");
291 tempD = fv.get<std::vector<double> >(
name,
"WaferMaskMode");
301 tempS = fv.get<std::vector<std::string> >(namet,
"WaferMode");
302 std::string sv2 = (!tempS.empty()) ? tempS[0] :
"HGCalGeometryMode::ExtrudedPolygon";
303 mode = getGeometryWaferMode(sv2);
304 tempD = fv.get<std::vector<double> >(namet,
"NumberOfCellsFine");
306 tempD = fv.get<std::vector<double> >(namet,
"NumberOfCellsCoarse");
308 tempD = fv.get<std::vector<double> >(namet,
"WaferSize");
310 tempD = fv.get<std::vector<double> >(namet,
"WaferThickness");
312 tempD = fv.get<std::vector<double> >(namet,
"SensorSeparation");
314 tempD = fv.get<std::vector<double> >(namet,
"MouseBite");
327 for (
int k = 0;
k < 2; ++
k)
333 geom->loadSpecParsHexagon(fv, php,
name, namew, namec,
name2);
335 geom->loadGeometryHexagon(cpv, php,
name, namew, namec,
mode);
337 geom->loadCellParsHexagon(vmap, php);
343 geom->loadSpecParsHexagon(fv, php,
name, namew, namec,
name2);
345 geom->loadGeometryHexagon(cpv, php,
name, namew, namec,
mode);
347 geom->loadWaferHexagon(php);
349 geom->loadCellParsHexagon(vmap, php);
354 geom->loadSpecParsHexagon8(fv, vmap, php,
name);
356 geom->loadGeometryHexagon8(cpv, php,
name, 1);
360 geom->loadWaferHexagon8(php);
363 geom->loadSpecParsHexagon8(fv, vmap, php,
name);
365 geom->loadGeometryHexagon8(cpv, php,
name, 1);
369 geom->loadWaferHexagon8(php);
373 tempD = fv.get<std::vector<double> >(
name,
"LevelZSide");
376 tempD = fv.get<std::vector<double> >(
name,
"FirstLayer");
378 tempD = fv.get<std::vector<double> >(
name,
"FirstMixedLayer");
380 tempD = fv.get<std::vector<double> >(
name,
"DetectorType");
382 tempD = fv.get<std::vector<double> >(
name,
"WaferThickness");
384 tempD = fv.get<std::vector<double> >(
name,
"MinimumTileSize");
388 tempD = fv.get<std::vector<double> >(
name,
"WaferMaskMode");
398 geom->loadSpecParsTrapezoid(fv, vmap, php,
name);
402 geom->loadCellTrapezoid(php);
404 edm::LogError(
"HGCalGeom") <<
"Unknown Geometry type " << php.
mode_ <<
" for HGCal " <<
name <<
":" << namew
407 <<
"Unknown Geometry type " << php.
mode_ <<
" for HGCal " <<
name <<
":" << namew <<
":" << namec;
410 edm::LogError(
"HGCalGeom") <<
" Attribute Volume:" <<
name <<
" not found but needed.";
411 throw cms::Exception(
"DDException") <<
"Attribute Volume:" <<
name <<
" not found but needed.";
415 <<
" with flag " <<
ok;