20 #include <unordered_set> 49 std::map<int, HGCalGeomParameters::layerParameters>
layers;
50 std::vector<HGCalParameters::hgtrform> trforms;
51 std::vector<bool> trformUse;
57 int nsiz = (
int)(copy.size());
58 int lay = (nsiz > 0) ? copy[nsiz - 1] : 0;
59 int zp = (nsiz > 2) ? copy[nsiz - 3] : -1;
63 throw cms::Exception(
"DDException") <<
"Funny layer # " << lay <<
" zp " << zp <<
" in " << nsiz <<
" components";
66 php.
layer_.emplace_back(lay);
67 auto itr = layers.find(lay);
68 if (itr == layers.end()) {
69 double rin(0), rout(0);
72 const std::vector<double>& rmin = polyhedra.
rMinVec();
73 const std::vector<double>& rmax = polyhedra.
rMaxVec();
86 fv.
rotation().GetComponents(x, y, z);
87 const CLHEP::HepRep3x3
rotation(x.X(), y.X(), z.X(), x.Y(), y.Y(), z.Y(), x.Z(), y.Z(), z.Z());
95 const CLHEP::Hep3Vector h3v(xx, yy, fv.
translation().Z());
103 trforms.emplace_back(mytrf);
104 trformUse.emplace_back(
false);
113 std::unordered_map<int32_t, int32_t> copies;
115 std::vector<int32_t> wafer2copy;
116 std::vector<HGCalGeomParameters::cellParameters> wafers;
118 DDValue val1(attribute, sdTag2, 0.0);
123 edm::LogError(
"HGCalGeom") <<
" Attribute " << val1 <<
" not found but needed.";
124 throw cms::Exception(
"DDException") <<
"Attribute " << val1 <<
" not found but needed.";
127 std::unordered_set<std::string>
names;
132 int nsiz = (
int)(copy.size());
133 int wafer = (nsiz > 0) ? copy[nsiz - 1] : 0;
134 int layer = (nsiz > 1) ? copy[nsiz - 2] : 0;
136 edm::LogError(
"HGCalGeom") <<
"Funny wafer # " << wafer <<
" in " << nsiz <<
" components";
138 }
else if (layer > (
int)(layers.size())) {
139 edm::LogWarning(
"HGCalGeom") <<
"Funny wafer # " << wafer <<
" Layer " << layer <<
":" << layers.size()
140 <<
" among " << nsiz <<
" components";
142 auto itr = copies.find(wafer);
143 auto cpy = copiesInLayers[layer].find(wafer);
144 if (itr != copies.end() && cpy == copiesInLayers[layer].end()) {
145 copiesInLayers[layer][wafer] = itr->second;
147 if (itr == copies.end()) {
148 copies[wafer] = wafer2copy.size();
149 copiesInLayers[layer][wafer] = wafer2copy.size();
156 wafer2copy.emplace_back(wafer);
159 wafers.emplace_back(cell);
160 if (names.count(name) == 0) {
161 std::vector<double> zv, rv;
164 zv = polyhedra.
zVec();
173 double dz = 0.5 * (zv[1] - zv[0]);
196 std::map<int, int> wafertype;
197 std::map<int, HGCalGeomParameters::cellParameters> cellsf, cellsc;
198 DDValue val2(attribute, sdTag3, 0.0);
203 edm::LogError(
"HGCalGeom") <<
" Attribute " << val2 <<
" not found but needed.";
204 throw cms::Exception(
"DDException") <<
"Attribute " << val2 <<
" not found but needed.";
211 int nsiz = (
int)(copy.size());
212 int cellx = (nsiz > 0) ? copy[nsiz - 1] : 0;
213 int wafer = (nsiz > 1) ? copy[nsiz - 2] : 0;
214 int cell = cellx % 1000;
215 int type = cellx / 1000;
216 if (type != 1 && type != 2) {
217 edm::LogError(
"HGCalGeom") <<
"Funny cell # " << cell <<
" type " << type <<
" in " << nsiz <<
" components";
220 auto ktr = wafertype.find(wafer);
221 if (ktr == wafertype.end())
222 wafertype[wafer] = type;
224 std::map<int, HGCalGeomParameters::cellParameters>::iterator itr;
227 itr = cellsf.find(cell);
228 newc = (itr == cellsf.end());
230 itr = cellsc.find(cell);
231 newc = (itr == cellsc.end());
235 bool half = (name.find(
"Half") != std::string::npos);
245 <<
"Type " << type <<
" Cell " << cellx <<
" local " << xx <<
":" << yy <<
" new " << p1 <<
":" <<
p2;
261 layers, trforms, trformUse, copies, copiesInLayers, wafer2copy, wafers, wafertype, cellsf, cellsc, php);
273 std::vector<HGCalParameters::hgtrform>& trforms,
274 std::vector<bool>& trformUse,
275 const std::unordered_map<int32_t, int32_t>& copies,
277 const std::vector<int32_t>& wafer2copy,
278 const std::vector<HGCalGeomParameters::cellParameters>& wafers,
279 const std::map<int, int>& wafertype,
280 const std::map<int, HGCalGeomParameters::cellParameters>& cellsf,
281 const std::map<int, HGCalGeomParameters::cellParameters>& cellsc,
283 if (((cellsf.size() + cellsc.size()) == 0) || (wafers.empty()) || (layers.empty())) {
284 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters : number of cells " << cellsf.size() <<
":" << cellsc.size()
285 <<
" wafers " << wafers.size() <<
" layers " << layers.size() <<
" illegal";
286 throw cms::Exception(
"DDException") <<
"HGCalGeomParameters: mismatch between geometry and specpar: cells " 287 << cellsf.size() <<
":" << cellsc.size() <<
" wafers " << wafers.size()
288 <<
" layers " << layers.size();
291 for (
unsigned int i = 0;
i < layers.size(); ++
i) {
292 for (
auto& layer : layers) {
297 php.
zLayerHex_.emplace_back(layer.second.zpos);
302 for (
unsigned int i = 0;
i < php.
layer_.size(); ++
i) {
303 for (
unsigned int i1 = 0;
i1 < trforms.size(); ++
i1) {
304 if (!trformUse[
i1] && php.
layerGroup_[trforms[
i1].lay - 1] == (
int)(
i + 1)) {
306 trforms[
i1].lay = (
i + 1);
307 trformUse[
i1] =
true;
310 for (
unsigned int i2 = i1 + 1;
i2 < trforms.size(); ++
i2) {
311 if (!trformUse[
i2] && trforms[
i2].zp == trforms[i1].zp &&
315 trformUse[
i2] =
true;
326 for (
unsigned i = 0;
i < wafer2copy.size(); ++
i) {
328 php.
waferPosX_.emplace_back(wafers[i].xyz.x());
329 php.
waferPosY_.emplace_back(wafers[i].xyz.y());
330 auto ktr = wafertype.find(wafer2copy[i]);
331 int typet = (ktr == wafertype.end()) ? 0 : (ktr->second);
333 double r = wafers[
i].xyz.perp();
335 for (
int k = 1;
k < 4; ++
k) {
346 std::vector<HGCalGeomParameters::cellParameters>::const_iterator itrf = wafers.end();
347 for (
unsigned int i = 0;
i < cellsf.size(); ++
i) {
348 auto itr = cellsf.find(
i);
349 if (itr == cellsf.end()) {
350 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters: missing info for" 351 <<
" fine cell number " <<
i;
352 throw cms::Exception(
"DDException") <<
"HGCalGeomParameters: missing info for fine cell number " <<
i;
354 double xx = (itr->second).xyz.x();
355 double yy = (itr->second).xyz.y();
356 int waf = (itr->second).wafer;
357 std::pair<double, double>
xy =
cellPosition(wafers, itrf, waf, xx, yy);
364 for (
unsigned int i = 0;
i < cellsc.size(); ++
i) {
365 auto itr = cellsc.find(
i);
366 if (itr == cellsc.end()) {
367 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters: missing info for" 368 <<
" coarse cell number " <<
i;
369 throw cms::Exception(
"DDException") <<
"HGCalGeomParameters: missing info for coarse cell number " <<
i;
371 double xx = (itr->second).xyz.x();
372 double yy = (itr->second).xyz.y();
373 int waf = (itr->second).wafer;
374 std::pair<double, double>
xy =
cellPosition(wafers, itrf, waf, xx, yy);
386 php.
depth_.emplace_back(
i + 1);
426 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalGeomParameters: wafer radius " << php.
waferR_ <<
" and dimensions of the " 440 <<
" coarse cells in a wafer";
459 for (std::unordered_map<int, int>::const_iterator itr = theModules.begin(); itr != theModules.end(); ++itr, ++k2) {
460 edm::LogVerbatim(
"HGCalGeom") <<
"[" << k2 <<
"] " << itr->first <<
":" << itr->second;
469 std::map<int, HGCalGeomParameters::layerParameters>
layers;
476 int nsiz = (
int)(copy.size());
477 int lay = (nsiz > levelTop) ? copy[nsiz - 4] : copy[nsiz - 1];
482 edm::LogError(
"HGCalGeom") <<
"Funny layer # " << lay <<
" zp " << zside <<
" in " << nsiz <<
" components";
486 php.
layer_.emplace_back(lay);
487 auto itr = layers.find(lay);
488 if (itr == layers.end()) {
494 layers[lay] = laypar;
496 if (trforms.find(std::make_pair(lay, zside)) == trforms.end()) {
498 fv.
rotation().GetComponents(x, y, z);
499 const CLHEP::HepRep3x3
rotation(x.X(), y.X(), z.X(), x.Y(), y.Y(), z.Y(), x.Z(), y.Z(), z.Z());
503 const CLHEP::Hep3Vector h3v(xx, yy, fv.
translation().Z());
511 trforms[std::make_pair(lay, zside)] = mytrf;
524 const int& firstLayer,
526 double rmin(0), rmax(0);
527 for (
unsigned int i = 0;
i < layers.size(); ++
i) {
528 for (
auto& layer : layers) {
529 if (layer.first == (
int)(
i + firstLayer)) {
533 php.
zLayerHex_.emplace_back(layer.second.zpos);
535 rmin = layer.second.rmin;
536 rmax = layer.second.rmax;
538 if (rmin > layer.second.rmin)
539 rmin = layer.second.rmin;
540 if (rmax < layer.second.rmax)
541 rmax = layer.second.rmax;
547 php.
rLimit_.emplace_back(rmin);
548 php.
rLimit_.emplace_back(rmax);
553 for (
unsigned int i = 0;
i < php.
layer_.size(); ++
i) {
554 for (
auto& trform : trforms) {
555 if (trform.first.first == (
int)(
i + firstLayer)) {
630 php.
boundR_ = fv.
get<std::vector<double> >(sdTag4,
"RadiusBound");
632 php.
rLimit_ = fv.
get<std::vector<double> >(sdTag4,
"RadiusLimits");
640 php.
slopeMin_ = fv.
get<std::vector<double> >(sdTag4,
"Slope");
643 const auto&
dummy = fv.
get<std::vector<double> >(sdTag2,
"WaferSize");
647 php.
cellSize_ = fv.
get<std::vector<double> >(sdTag3,
"CellSize");
656 <<
" for cell grouping " << php.
boundR_[0] <<
":" << php.
boundR_[1] <<
":" 661 <<
"for the 3 ranges:";
723 const auto&
dummy = fv.
get<std::vector<double> >(sdTag1,
"RadiusCuts");
729 php.
slopeMin_ = fv.
get<std::vector<double> >(sdTag1,
"SlopeBottom");
730 php.
zFrontMin_ = fv.
get<std::vector<double> >(sdTag1,
"ZFrontBottom");
732 php.
rMinFront_ = fv.
get<std::vector<double> >(sdTag1,
"RMinFront");
735 php.
slopeTop_ = fv.
get<std::vector<double> >(sdTag1,
"SlopeTop");
736 php.
zFrontTop_ = fv.
get<std::vector<double> >(sdTag1,
"ZFrontTop");
738 php.
rMaxFront_ = fv.
get<std::vector<double> >(sdTag1,
"RMaxFront");
741 const auto& dummy2 = fv.
get<std::vector<double> >(sdTag1,
"LayerOffset");
744 for (
auto const& it : vmap) {
746 for (
const auto&
i : it.second)
749 for (
const auto&
i : it.second)
752 for (
const auto&
i : it.second)
765 <<
"parameters for 120 to 200 micron " 770 <<
"parameters for 200 to 300 micron " 842 for (
auto const& it : vmap) {
844 for (
const auto&
i : it.second)
847 for (
const auto&
i : it.second)
850 for (
const auto&
i : it.second)
857 php.
rMinLayerBH_ = fv.
get<std::vector<double> >(sdTag1,
"RMinLayerBH");
864 php.
slopeMin_ = fv.
get<std::vector<double> >(sdTag1,
"SlopeBottom");
865 php.
zFrontMin_ = fv.
get<std::vector<double> >(sdTag1,
"ZFrontBottom");
867 php.
rMinFront_ = fv.
get<std::vector<double> >(sdTag1,
"RMinFront");
870 php.
slopeTop_ = fv.
get<std::vector<double> >(sdTag1,
"SlopeTop");
871 php.
zFrontTop_ = fv.
get<std::vector<double> >(sdTag1,
"ZFrontTop");
873 php.
rMaxFront_ = fv.
get<std::vector<double> >(sdTag1,
"RMaxFront");
876 const auto& dummy2 = fv.
get<std::vector<double> >(sdTag1,
"LayerOffset");
927 edm::LogVerbatim(
"HGCalGeom") <<
"Input waferWidth " << waferW <<
":" << rmin <<
" R Limits: " << rin <<
":" << rout
928 <<
" Fine " << rMaxFine;
936 double dx = 0.5 * waferW;
937 double dy = 3.0 * dx *
tan(30._deg);
938 double rr = 2.0 * dx *
tan(30._deg);
939 int ncol = (
int)(2.0 * rout / waferW) + 1;
940 int nrow = (
int)(rout / (waferW *
tan(30._deg))) + 1;
941 int ns2 = (2 * ncol + 1) * (2 * nrow + 1) * php.
layer_.size();
942 int incm(0), inrm(0), kount(0), ntot(0);
948 for (
int nr = -nrow;
nr <= nrow; ++
nr) {
949 int inr = (
nr >= 0) ?
nr : -
nr;
950 for (
int nc = -ncol; nc <= ncol; ++nc) {
951 int inc = (nc >= 0) ? nc : -nc;
952 if (inr % 2 == inc % 2) {
953 double xpos = nc *
dx;
954 double ypos =
nr *
dy;
956 double rpos =
std::sqrt(xpos * xpos + ypos * ypos);
957 int typet = (rpos < rMaxFine) ? 1 : 2;
959 for (
int k = 1;
k < 4; ++
k) {
960 if ((rpos + rmin) <= php.
boundR_[
k]) {
966 if (corner.first > 0) {
967 int copy = inr * 100 + inc;
978 edm::LogVerbatim(
"HGCalGeom") << kount <<
":" << ntot <<
" Copy " << copy <<
" Type " << typel <<
":" << typet
979 <<
" Location " << corner.first <<
" Position " << xpos <<
":" << ypos
980 <<
" Layers " << php.
layer_.size();
987 for (
unsigned int il = 0; il < php.
layer_.size(); ++il) {
988 std::pair<int, int> corner =
990 if (corner.first > 0) {
991 auto cpy = copiesInLayers[php.
layer_[il]].find(copy);
992 if (cpy == copiesInLayers[php.
layer_[il]].end())
993 copiesInLayers[php.
layer_[il]][copy] =
998 waferTypes[
wl] = std::make_pair(corner.first, corner.second);
1010 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalWaferHexagon: # of columns " << incm <<
" # of rows " << inrm <<
" and " 1011 << kount <<
":" << ntot <<
" wafers; R " << rin <<
":" << rout;
1013 for (
unsigned int k = 0;
k < copiesInLayers.size(); ++
k) {
1014 const auto& theModules = copiesInLayers[
k];
1017 for (std::unordered_map<int, int>::const_iterator itr = theModules.begin(); itr != theModules.end(); ++itr, ++k2) {
1018 edm::LogVerbatim(
"HGCalGeom") <<
"[" << k2 <<
"] " << itr->first <<
":" << itr->second;
1037 edm::LogVerbatim(
"HGCalGeom") <<
"Input waferWidth " << waferW <<
":" << waferS <<
" R Max: " << rout;
1045 double r = 0.5 * (waferW + waferS);
1047 double dy = 0.75 *
R;
1048 int N = (r == 0) ? 3 : ((
int)(0.5 * rout /
r) + 3);
1049 int ns1 = (2 * N + 1) * (2 * N + 1);
1052 edm::LogVerbatim(
"HGCalGeom") <<
"r " << r <<
" dy " << dy <<
" N " << N <<
" sizes " << ns1 <<
":" << ns2;
1053 std::vector<int> indtypes(ns1 + 1);
1059 int ipos(0), lpos(0), uvmax(0);
1060 std::vector<int> uvmx(php.
zLayerHex_.size(), 0);
1061 for (
int v = -N;
v <=
N; ++
v) {
1062 for (
int u = -N; u <=
N; ++u) {
1064 int nc = -2 * u +
v;
1065 double xpos = nc *
r;
1066 double ypos = nr *
dy;
1071 wafersInLayers[indx] = ipos;
1087 typesInLayers[kndx] = lpos;
1090 indtypes.emplace_back(kndx);
1092 std::pair<int, int> corner =
1097 <<
" u " << u <<
" v " << v <<
" with " << corner.first <<
" corners";
1105 edm::LogVerbatim(
"HGCalGeom") <<
"Layer " << lay <<
" u|v " << u <<
":" << v <<
" with " << corner.first
1106 <<
" corners First " << corner.second;
1109 waferTypes[
wl] = std::make_pair(corner.first, corner.second);
1151 int id = indtypes[
k];
1172 << xyoff.first <<
":" << xyoff.second;
1193 for (
auto const& it : vmap) {
1195 for (
const auto&
i : it.second)
1198 for (
const auto&
i : it.second)
1209 for (
unsigned int k = 0;
k < php.
cellFine_.size(); ++
k)
1219 for (
unsigned k = 0;
k < 2; ++
k) {
1229 <<
"\n[0] new R = " << rv <<
" Eta = " <<
eta;
1246 std::vector<double>::iterator
low,
high;
1263 edm::LogVerbatim(
"HGCalGeom") <<
"Modified irlow " << irlow <<
" dr " << drlow;
1282 edm::LogVerbatim(
"HGCalGeom") <<
"Modified irhigh " << irhigh <<
" dr " << drhigh;
1288 edm::LogVerbatim(
"HGcalGeom") <<
"Layer " <<
k <<
" Type " << kk <<
" Low edge " << irlow <<
":" << drlow
1289 <<
" Top edge " << irhigh <<
":" << drhigh;
1312 mytr.
h = 0.5 * (rmax - rmin);
1341 const std::vector<double>& fvec = value.
doubles();
1342 int nval = fvec.size();
1345 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters : # of " << str <<
" bins " << nval <<
" < " << nmin
1347 throw cms::Exception(
"DDException") <<
"HGCalGeomParameters: cannot get array " <<
str;
1350 if (nval < 1 && nmin == 0) {
1351 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters : # of " << str <<
" bins " << nval <<
" < 1 ==> illegal" 1352 <<
" (nmin=" << nmin <<
")";
1353 throw cms::Exception(
"DDException") <<
"HGCalGeomParameters: cannot get array " <<
str;
1359 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters: cannot get array " <<
str;
1360 throw cms::Exception(
"DDException") <<
"HGCalGeomParameters: cannot get array " <<
str;
1362 std::vector<double> fvec;
1368 const std::vector<HGCalGeomParameters::cellParameters>& wafers,
1369 std::vector<HGCalGeomParameters::cellParameters>::const_iterator& itrf,
1373 if (itrf == wafers.end()) {
1374 for (std::vector<HGCalGeomParameters::cellParameters>::const_iterator itr = wafers.begin(); itr != wafers.end();
1376 if (itr->wafer == wafer) {
1382 double dx(0),
dy(0);
1383 if (itrf != wafers.end()) {
1384 dx = (xx - itrf->xyz.x());
1387 dy = (yy - itrf->xyz.y());
1391 return std::make_pair(
dx, dy);
1395 std::for_each(v.begin(), v.end(), [
s](
double&
n) {
n *=
s; });
std::vector< int > iradMaxBH_
std::vector< double > waferPosY_
std::vector< int > layer_
std::vector< double > moduleDzR_
std::vector< int > depthLayerF_
std::vector< int > depth_
std::vector< double > zFrontMin_
HGCalGeomTools geomTools_
std::vector< double > moduleHR_
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
const std::vector< double > & doubles() const
a reference to the double-valued values stored in the given instance of DDValue
layer_map copiesInLayers_
std::vector< bool > cellCoarseHalf_
std::vector< bool > cellFineHalf_
std::vector< double > rMaxVec(void) const
int scintType(const int layer) const
std::vector< int > moduleLayR_
nav_type copyNumbers() const
return the stack of copy numbers
void loadSpecParsHexagon(const DDFilteredView &, HGCalParameters &, const DDCompactView *, const std::string &, const std::string &)
std::vector< int > cellFine_
static int32_t waferV(const int32_t index)
void rescale(std::vector< double > &, const double s)
std::vector< double > moduleHS_
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
std::vector< double > trformTranY_
Global3DPoint GlobalPoint
std::vector< double > cellFineY_
std::vector< double > trformRotZY_
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
std::string_view noNamespace(std::string_view)
std::vector< uint32_t > trformIndex_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< int > layerGroupM_
Compact representation of the geometrical detector hierarchy.
bool DDfetch(const DDsvalues_type *, DDValue &)
helper for retrieving DDValues from DDsvalues_type *.
const std::string names[nVars_]
double scintCellSize(const int layer) const
std::vector< double > trformRotXX_
std::vector< int > nPhiBinBH_
void loadSpecParsHexagon8(const DDFilteredView &, HGCalParameters &)
A DDSolid represents the shape of a part.
void fillTrForm(const hgtrform &mytr)
wafer_map wafersInLayers_
std::vector< double > rMinLayerBH_
std::vector< double > trformRotZX_
std::vector< double > xVec(void) const
std::vector< int > dbl_to_int(const std::vector< double > &vecdbl)
Converts a std::vector of doubles to a std::vector of int.
std::vector< double > cellCoarseX_
std::vector< int > firstModule_
std::vector< int > cellCoarse_
std::vector< double > trformRotYZ_
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
void loadCellTrapezoid(HGCalParameters &php)
std::pair< double, double > cellPosition(const std::vector< cellParameters > &wafers, std::vector< cellParameters >::const_iterator &itrf, int wafer, double xx, double yy)
std::vector< double > boundR_
std::vector< double > cellSize_
std::vector< int > waferUVMaxLayer_
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
std::vector< double > moduleDzS_
bool next()
set current node to the next node in the filtered tree
std::vector< int > layerIndex_
std::vector< double > moduleAlphaR_
static double k_ScaleFromDD4HepToG4
std::vector< double > yLayerHex_
void loadCellParsHexagon(const DDCompactView *cpv, HGCalParameters &php)
static double k_ScaleFromDDD
std::vector< double > trformRotXY_
std::vector< double > rMaxFront_
Cos< T >::type cos(const T &t)
tbb::concurrent_unordered_map< std::string, tbb::concurrent_vector< double >> DDVectorsMap
std::vector< double > trformRotYX_
int scintCells(const int layer) const
hgtrap getModule(unsigned int k, bool reco) const
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
DDSolidShape shape(void) const
The type of the solid.
std::vector< double > slopeTop_
std::vector< int > layerCenter_
static int32_t waferU(const int32_t index)
std::vector< double > moduleBlR_
void loadSpecParsTrapezoid(const DDFilteredView &, HGCalParameters &)
std::vector< double > rMinLayHex_
void loadGeometryHexagon8(const DDFilteredView &, HGCalParameters &, int)
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
void fillModule(const hgtrap &mytr, bool reco)
std::vector< double > getDDDArray(const std::string &, const DDsvalues_type &, const int)
std::vector< double > moduleTlS_
std::vector< double > rMinVec(void) const
T get(const std::string &) const
extract attribute value
static int32_t waferLayer(const int32_t index)
std::vector< double > zLayerHex_
std::vector< double > get(const std::string &)
void loadWaferHexagon(HGCalParameters &php)
std::vector< double > rMaxLayHex_
static uint32_t k_CornerSize
std::vector< double > trformTranX_
std::unordered_map< int32_t, std::pair< int32_t, int32_t > > waferT_map
std::vector< double > zRanges_
std::vector< double > slopeMin_
std::vector< int > lastModule_
std::vector< double > zVec(void) const
std::vector< double > radiusMixBoundary_
std::vector< double > cellThickness_
std::vector< double > trformRotXZ_
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double > > XYZPointD
point in space with cartesian internal representation
std::vector< double > zVec(void) const
std::vector< int > layerGroup_
std::unordered_map< int32_t, int32_t > wafer_map
static double k_ScaleToDDD
bool compareEqual(std::string_view, std::string_view)
std::vector< double > radius200to300_
std::vector< double > radius100to200_
DDsvalues_type mergedSpecifics() const
std::vector< double > rMinFront_
static double k_ScaleFromDD4Hep
std::vector< int > iradMinBH_
std::vector< double > trformRotYY_
std::vector< double > cellFineX_
std::vector< double > trformRotZZ_
std::vector< double > moduleAlphaS_
std::vector< int > layerGroupO_
std::vector< double > moduleBlS_
bool firstChild()
set the current node to the first child ...
std::vector< int > waferCopy_
std::vector< int > depthIndex_
std::vector< int > layerFrontBH_
std::vector< double > rLimit_
std::vector< double > zFrontTop_
std::vector< double > radiusLayer_[2]
std::vector< int > waferTypeT_
const DDTranslation & translation() const
The absolute translation of the current node.
std::vector< int > levelT_
std::vector< double > cellCoarseY_
std::vector< int > moduleLayS_
std::vector< double > trformTranZ_
std::vector< double > waferPosX_
void addTrForm(const CLHEP::Hep3Vector &h3v)
std::vector< double > moduleTlR_
std::vector< int > waferTypeL_
std::vector< double > xLayerHex_
const std::string & name() const
Returns the name.
void loadWaferHexagon8(HGCalParameters &php)
void loadGeometryHexagon(const DDFilteredView &, HGCalParameters &, const std::string &, const DDCompactView *, const std::string &, const std::string &, HGCalGeometryMode::WaferMode)
std::vector< std::unordered_map< int32_t, int32_t > > layer_map