22 #include <unordered_set> 48 std::map<int, HGCalGeomParameters::layerParameters>
layers;
49 std::vector<HGCalParameters::hgtrform> trforms;
50 std::vector<bool> trformUse;
56 int nsiz = (
int)(copy.size());
57 int lay = (nsiz > 0) ? copy[nsiz - 1] : 0;
58 int zp = (nsiz > 2) ? copy[nsiz - 3] : -1;
62 <<
"Funny layer # " << lay <<
" zp " << zp <<
" in " << nsiz
67 php.
layer_.emplace_back(lay);
68 auto itr = layers.find(lay);
69 if (itr == layers.end()) {
70 double rin(0), rout(0);
74 const std::vector<double>& rmin = polyhedra.
rMinVec();
75 const std::vector<double>& rmax = polyhedra.
rMaxVec();
88 fv.
rotation().GetComponents(x, y, z);
89 const CLHEP::HepRep3x3
rotation(x.X(), y.X(), z.X(), x.Y(), y.Y(), z.Y(),
96 const CLHEP::Hep3Vector h3v(xx, yy, fv.
translation().Z());
104 trforms.emplace_back(mytrf);
105 trformUse.emplace_back(
false);
114 std::unordered_map<int32_t, int32_t> copies;
116 std::vector<int32_t> wafer2copy;
117 std::vector<HGCalGeomParameters::cellParameters> wafers;
119 DDValue val1(attribute, sdTag2, 0.0);
125 <<
" Attribute " << val1 <<
" not found but needed.";
127 <<
"Attribute " << val1 <<
" not found but needed.";
130 std::unordered_set<std::string>
names;
135 int nsiz = (
int)(copy.size());
136 int wafer = (nsiz > 0) ? copy[nsiz - 1] : 0;
137 int layer = (nsiz > 1) ? copy[nsiz - 2] : 0;
140 <<
"Funny wafer # " << wafer <<
" in " << nsiz <<
" components";
142 }
else if (layer > (
int)(layers.size())) {
144 <<
"Funny wafer # " << wafer <<
" Layer " << layer <<
":" 145 << layers.size() <<
" among " << nsiz <<
" components";
147 auto itr = copies.find(wafer);
148 auto cpy = copiesInLayers[layer].find(wafer);
149 if (itr != copies.end() && cpy == copiesInLayers[layer].end()) {
150 copiesInLayers[layer][wafer] = itr->second;
152 if (itr == copies.end()) {
153 copies[wafer] = wafer2copy.size();
154 copiesInLayers[layer][wafer] = wafer2copy.size();
159 wafer2copy.emplace_back(wafer);
163 wafers.emplace_back(cell);
164 if (names.count(name) == 0) {
165 std::vector<double> zv, rv;
168 zv = polyhedra.
zVec();
178 double dz = 0.5 * (zv[1] - zv[0]);
181 <<
"Mode " << mode <<
" R " << php.
waferSize_ <<
":" 202 std::map<int, int> wafertype;
203 std::map<int, HGCalGeomParameters::cellParameters> cellsf, cellsc;
204 DDValue val2(attribute, sdTag3, 0.0);
210 <<
" Attribute " << val2 <<
" not found but needed.";
212 <<
"Attribute " << val2 <<
" not found but needed.";
219 int nsiz = (
int)(copy.size());
220 int cellx = (nsiz > 0) ? copy[nsiz - 1] : 0;
221 int wafer = (nsiz > 1) ? copy[nsiz - 2] : 0;
222 int cell = cellx % 1000;
223 int type = cellx / 1000;
224 if (type != 1 && type != 2) {
225 edm::LogError(
"HGCalGeom") <<
"Funny cell # " << cell <<
" type " 226 << type <<
" in " << nsiz <<
" components";
229 auto ktr = wafertype.find(wafer);
230 if (ktr == wafertype.end()) wafertype[wafer] = type;
232 std::map<int, HGCalGeomParameters::cellParameters>::iterator itr;
235 itr = cellsf.find(cell);
236 newc = (itr == cellsf.end());
238 itr = cellsc.find(cell);
239 newc = (itr == cellsc.end());
243 bool half = (name.find(
"Half") != std::string::npos);
253 <<
"Type " << type <<
" Cell " << cellx <<
" local " << xx
254 <<
":" << yy <<
" new " << p1 <<
":" <<
p2;
270 if (((cellsf.size() + cellsc.size()) == 0) || (wafers.empty()) ||
273 <<
"HGCalGeomParameters : number of cells " << cellsf.size() <<
":" 274 << cellsc.size() <<
" wafers " << wafers.size() <<
" layers " 275 << layers.size() <<
" illegal";
277 <<
"HGCalGeomParameters: mismatch between geometry and specpar: cells " 278 << cellsf.size() <<
":" << cellsc.size() <<
" wafers " << wafers.size()
279 <<
" layers " << layers.size();
282 for (
unsigned int i = 0;
i < layers.size(); ++
i) {
283 for (
auto& layer : layers) {
288 php.
zLayerHex_.emplace_back(layer.second.zpos);
293 for (
unsigned int i = 0;
i < php.
layer_.size(); ++
i) {
294 for (
unsigned int i1 = 0; i1 < trforms.size(); ++i1) {
295 if (!trformUse[i1] &&
298 trforms[i1].lay = (
i + 1);
299 trformUse[i1] =
true;
302 for (
unsigned int i2 = i1 + 1; i2 < trforms.size(); ++i2) {
303 if (!trformUse[i2] && trforms[i2].zp == trforms[i1].zp &&
307 trformUse[i2] =
true;
318 for (
unsigned i = 0;
i < wafer2copy.size(); ++
i) {
320 php.
waferPosX_.emplace_back(wafers[i].xyz.x());
321 php.
waferPosY_.emplace_back(wafers[i].xyz.y());
322 auto ktr = wafertype.find(wafer2copy[i]);
323 int typet = (ktr == wafertype.end()) ? 0 : (ktr->second);
325 double r = wafers[
i].xyz.perp();
327 for (
int k = 1;
k < 4; ++
k) {
338 std::vector<HGCalGeomParameters::cellParameters>::const_iterator itrf =
340 for (
unsigned int i = 0;
i < cellsf.size(); ++
i) {
341 auto itr = cellsf.find(
i);
342 if (itr == cellsf.end()) {
343 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters: missing info for" 344 <<
" fine cell number " <<
i;
346 <<
"HGCalGeomParameters: missing info for fine cell number " <<
i;
348 double xx = (itr->second).xyz.x();
349 double yy = (itr->second).xyz.y();
350 int waf = (itr->second).wafer;
351 std::pair<double, double>
xy =
cellPosition(wafers, itrf, waf, xx, yy);
358 for (
unsigned int i = 0;
i < cellsc.size(); ++
i) {
359 auto itr = cellsc.find(
i);
360 if (itr == cellsc.end()) {
361 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters: missing info for" 362 <<
" coarse cell number " <<
i;
364 <<
"HGCalGeomParameters: missing info for coarse cell number " <<
i;
366 double xx = (itr->second).xyz.x();
367 double yy = (itr->second).xyz.y();
368 int waf = (itr->second).wafer;
369 std::pair<double, double>
xy =
cellPosition(wafers, itrf, waf, xx, yy);
381 php.
depth_.emplace_back(
i + 1);
404 <<
"HGCalGeomParameters finds " << php.
zLayerHex_.size() <<
" layers";
408 <<
"Layer[" <<
i <<
":" << k <<
":" << php.
layer_[
k]
413 <<
"HGCalGeomParameters has " << php.
depthIndex_.size() <<
" depths";
417 <<
"Reco Layer[" <<
i <<
":" << k <<
"] First Layer " 421 <<
"HGCalGeomParameters finds " << php.
nSectors_ <<
" wafers";
424 <<
"Wafer[" <<
i <<
": " << php.
waferCopy_[
i] <<
"] type " 428 << php.
waferR_ <<
" and dimensions of the " 441 <<
"HGCalGeomParameters finds " << php.
cellFineX_.size()
442 <<
" fine cells in a wafer";
445 <<
"Fine Cell[" <<
i <<
"] at (" << php.
cellFineX_[
i] <<
"," 448 <<
"HGCalGeomParameters finds " << php.
cellCoarseX_.size()
449 <<
" coarse cells in a wafer";
455 <<
"Obtained " << php.
trformIndex_.size() <<
" transformation matrices";
468 <<
"Dump copiesInLayers for " << php.
copiesInLayers_.size() <<
" layers";
473 for (std::unordered_map<int, int>::const_iterator itr = theModules.begin();
474 itr != theModules.end(); ++itr, ++k2) {
476 <<
"[" << k2 <<
"] " << itr->first <<
":" << itr->second;
487 std::map<int, HGCalGeomParameters::layerParameters>
layers;
494 int nsiz = (
int)(copy.size());
495 int lay = (nsiz > levelTop) ? copy[nsiz - 4] : copy[nsiz - 1];
497 if (zside != 1) zside = -1;
499 edm::LogError(
"HGCalGeom") <<
"Funny layer # " << lay <<
" zp " << zside
500 <<
" in " << nsiz <<
" components";
505 php.
layer_.emplace_back(lay);
506 auto itr = layers.find(lay);
507 if (itr == layers.end()) {
513 layers[lay] = laypar;
515 if (trforms.find(std::make_pair(lay, zside)) == trforms.end()) {
517 fv.
rotation().GetComponents(x, y, z);
518 const CLHEP::HepRep3x3
rotation(x.X(), y.X(), z.X(), x.Y(), y.Y(),
519 z.Y(), x.Z(), y.Z(), z.Z());
527 const CLHEP::Hep3Vector h3v(xx, yy, fv.
translation().Z());
535 trforms[std::make_pair(lay, zside)] = mytrf;
541 double rmin(0), rmax(0);
542 for (
unsigned int i = 0;
i < layers.size(); ++
i) {
543 for (
auto& layer : layers) {
544 if (layer.first == (
int)(
i + firstLayer)) {
548 php.
zLayerHex_.emplace_back(layer.second.zpos);
550 rmin = layer.second.rmin;
551 rmax = layer.second.rmax;
553 if (rmin > layer.second.rmin) rmin = layer.second.rmin;
554 if (rmax < layer.second.rmax) rmax = layer.second.rmax;
560 php.
rLimit_.emplace_back(rmin);
561 php.
rLimit_.emplace_back(rmax);
566 for (
unsigned int i = 0;
i < php.
layer_.size(); ++
i) {
567 for (
auto& trform : trforms) {
568 if (trform.first.first == (
int)(
i + firstLayer)) {
578 <<
"HGCalGeomParameters finds " << php.
zLayerHex_.size() <<
" layers";
582 <<
"Layer[" <<
i <<
":" << k <<
":" << php.
layer_[
k]
587 <<
"Obtained " << php.
trformIndex_.size() <<
" transformation matrices";
613 <<
"HGCalGeomParameters: wafer radius ranges" 614 <<
" for cell grouping " << php.
boundR_[0] <<
":" << php.
boundR_[1] <<
":" 627 <<
"HGCalGeomParameters: LevelTop " << php.
levelT_[0];
637 << php.
slopeMin_[0] <<
" and layer groupings " 638 <<
"for the 3 ranges:";
656 <<
"HGCalGeomParameters: Wafer Size: " <<
waferSize_;
668 <<
"HGCalGeomParameters: " << php.
cellSize_.size() <<
" cells of sizes:";
682 <<
"HGCalGeomParameters: cell Thickness " << php.
cellThickness_[0] <<
":" 688 <<
"HGCalGeomParameters: Polynomial " 689 <<
"parameters for 120 to 200 micron " 697 <<
"HGCalGeomParameters: Polynomial " 698 <<
"parameters for 200 to 300 micron " 710 <<
"HGCalGeomParameters: Parameters for the" 732 <<
"HGCalParameters: Boundary[" <<
k 746 <<
"HGCalParameters: Boundary[" <<
k 755 <<
"HGCalParameters: Z-Boundary " << php.
zRanges_[0] <<
":" 777 <<
"HGCalGeomParameters:nCells " << php.
nCellsFine_ <<
":" 786 <<
"HGCalGeomParameters: Mix[" <<
k 802 <<
"HGCalParameters: Boundary[" <<
k 816 <<
"HGCalParameters: Boundary[" <<
k 825 <<
"HGCalParameters: Z-Boundary " << php.
zRanges_[0] <<
":" 836 <<
"Input waferWidth " << waferW <<
":" << rmin <<
" R Limits: " << rin
837 <<
":" << rout <<
" Fine " << rMaxFine;
845 double dx = 0.5 * waferW;
846 double dy = 3.0 * dx *
tan(30._deg);
847 double rr = 2.0 * dx *
tan(30._deg);
848 int ncol = (
int)(2.0 * rout / waferW) + 1;
849 int nrow = (
int)(rout / (waferW *
tan(30._deg))) + 1;
850 int ns2 = (2 * ncol + 1) * (2 * nrow + 1) * php.
layer_.size();
851 int incm(0), inrm(0), kount(0), ntot(0);
857 for (
int nr = -nrow; nr <= nrow; ++nr) {
858 int inr = (nr >= 0) ? nr : -nr;
859 for (
int nc = -ncol; nc <=
ncol; ++nc) {
860 int inc = (nc >= 0) ? nc : -nc;
861 if (inr % 2 == inc % 2) {
862 double xpos = nc *
dx;
863 double ypos = nr *
dy;
864 std::pair<int, int>
corner =
866 double rpos =
std::sqrt(xpos * xpos + ypos * ypos);
867 int typet = (rpos < rMaxFine) ? 1 : 2;
869 for (
int k = 1;
k < 4; ++
k) {
870 if ((rpos + rmin) <= php.
boundR_[
k]) {
876 if (corner.first > 0) {
877 int copy = inr * 100 + inc;
878 if (nc < 0) copy += 10000;
879 if (nr < 0) copy += 100000;
880 if (inc > incm) incm = inc;
881 if (inr > inrm) inrm = inr;
885 << kount <<
":" << ntot <<
" Copy " << copy <<
" Type " << typel
886 <<
":" << typet <<
" Location " << corner.first <<
" Position " 887 << xpos <<
":" << ypos <<
" Layers " << php.
layer_.size();
894 for (
unsigned int il = 0; il < php.
layer_.size(); ++il) {
898 if (corner.first > 0) {
899 auto cpy = copiesInLayers[php.
layer_[il]].find(copy);
900 if (cpy == copiesInLayers[php.
layer_[il]].end())
901 copiesInLayers[php.
layer_[il]][copy] =
906 if ((corner.first > 0) &&
910 waferTypes[wl] = std::make_pair(corner.first, corner.second);
923 <<
"HGCalWaferHexagon: # of columns " << incm <<
" # of rows " << inrm
924 <<
" and " << kount <<
":" << ntot <<
" wafers; R " << rin <<
":" << rout;
926 <<
"Dump copiesInLayers for " << php.
copiesInLayers_.size() <<
" layers";
927 for (
unsigned int k = 0;
k < copiesInLayers.size(); ++
k) {
928 const auto& theModules = copiesInLayers[
k];
931 for (std::unordered_map<int, int>::const_iterator itr = theModules.begin();
932 itr != theModules.end(); ++itr, ++k2) {
934 <<
"[" << k2 <<
"] " << itr->first <<
":" << itr->second;
943 auto wType = std::make_unique<HGCalWaferType>(
952 <<
"Input waferWidth " << waferW <<
":" << waferS <<
" R Max: " << rout;
960 double r = 0.5 * (waferW + waferS);
962 double dy = 0.75 *
R;
963 int N = (r == 0) ? 3 : ((
int)(0.5 * rout /
r) + 3);
964 int ns1 = (2 * N + 1) * (2 * N + 1);
968 <<
" sizes " << ns1 <<
":" << ns2;
969 std::vector<int> indtypes(ns1 + 1);
975 int ipos(0), lpos(0), uvmax(0);
976 std::vector<int> uvmx(php.
zLayerHex_.size(), 0);
977 for (
int v = -N;
v <=
N; ++
v) {
978 for (
int u = -N; u <=
N; ++u) {
981 double xpos = nc *
r;
982 double ypos = nr *
dy;
987 wafersInLayers[indx] = ipos;
989 std::pair<int, int>
corner =
1003 typesInLayers[kndx] = lpos;
1006 indtypes.emplace_back(kndx);
1014 <<
"Layer " << lay <<
" R " << php.
rMinLayHex_[
i] <<
":" 1015 << php.
rMaxLayHex_[
i] <<
" u " << u <<
" v " << v <<
" with " 1016 << corner.first <<
" corners";
1024 (corner.first > 0)) {
1027 <<
"Layer " << lay <<
" u|v " << u <<
":" << v <<
" with " 1028 << corner.first <<
" corners First " << corner.second;
1031 waferTypes[wl] = std::make_pair(corner.first, corner.second);
1064 <<
"HGCalGeomParameters: Total of " << php.
waferCopy_.size() <<
" wafers";
1068 <<
"[" <<
k <<
"] " << std::hex <<
id <<
std::dec <<
":" 1076 int id = indtypes[
k];
1101 <<
" rows for fine cells";
1102 for (
unsigned int k = 0;
k < php.
cellFine_.size(); ++
k)
1105 <<
"HGCalLoadCellPars: " << php.
cellCoarse_.size()
1106 <<
" rows for coarse cells";
1114 for (
unsigned k = 0;
k < 2; ++
k) {
1127 <<
"[" <<
k <<
"] rmax " << rmax <<
" Z = " << zv
1128 <<
" dEta = " << php.
cellSize_[
k] <<
"\n[0] new R = " << rv
1129 <<
" Eta = " <<
eta;
1139 <<
"[" << kount <<
"] new R = " << rv <<
" Eta = " <<
eta;
1148 std::vector<double>::iterator low, high;
1161 <<
"irlow " << irlow <<
" dr " << drlow <<
" min " << php.
minTileSize_;
1168 <<
"Modified irlow " << irlow <<
" dr " << drlow;
1175 <<
"[" <<
k <<
"] RHigh = " << php.
rMaxLayHex_[
k] <<
" pos " 1190 <<
"Modified irhigh " << irhigh <<
" dr " << drhigh;
1197 <<
"Layer " <<
k <<
" Type " << kk <<
" Low edge " << irlow <<
":" 1198 << drlow <<
" Top edge " << irhigh <<
":" << drhigh;
1213 <<
"Layer " << php.
firstLayer_ +
k <<
":" << kk <<
" Radius range " 1222 mytr.
h = 0.5 * (rmax - rmin);
1252 const std::vector<double>& fvec = value.
doubles();
1253 int nval = fvec.size();
1257 <<
"HGCalGeomParameters : # of " << str <<
" bins " << nval <<
" < " 1258 << nmin <<
" ==> illegal";
1260 <<
"HGCalGeomParameters: cannot get array " <<
str;
1263 if (nval < 1 && nmin == 0) {
1264 edm::LogError(
"HGCalGeom") <<
"HGCalGeomParameters : # of " << str
1265 <<
" bins " << nval <<
" < 1 ==> illegal" 1266 <<
" (nmin=" << nmin <<
")";
1268 <<
"HGCalGeomParameters: cannot get array " <<
str;
1275 <<
"HGCalGeomParameters: cannot get array " <<
str;
1277 <<
"HGCalGeomParameters: cannot get array " <<
str;
1279 std::vector<double> fvec;
1285 const std::vector<HGCalGeomParameters::cellParameters>& wafers,
1286 std::vector<HGCalGeomParameters::cellParameters>::const_iterator& itrf,
1287 int wafer,
double xx,
double yy) {
1288 if (itrf == wafers.end()) {
1289 for (std::vector<HGCalGeomParameters::cellParameters>::const_iterator itr =
1291 itr != wafers.end(); ++itr) {
1292 if (itr->wafer == wafer) {
1298 double dx(0),
dy(0);
1299 if (itrf != wafers.end()) {
1300 dx = (xx - itrf->xyz.x());
1302 dy = (yy - itrf->xyz.y());
1305 return std::make_pair(
dx, dy);
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_
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< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
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)
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::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_
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_
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)
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_
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
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
std::vector< double > radius200to300_
std::vector< double > radius100to200_
DDsvalues_type mergedSpecifics() const
std::vector< double > rMinFront_
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_
std::vector< std::pair< unsigned int, DDValue > > DDsvalues_type
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_
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