|
|
Go to the documentation of this file.
44 for (
int simreco = 0; simreco < 2; ++simreco) {
47 for (
unsigned int layer = 1; layer <=
tot_layers_[simreco]; ++layer) {
74 int wminT(9999999), wmaxT(-9999999), kount1(0), kount2(0);
77 int wmin(9999999),
wmax(-9999999), kount(0);
78 for (
int wafer = 0; wafer <
sectors(); ++wafer) {
103 int lay1 =
getIndex(lay0,
true).first;
104 edm::LogVerbatim(
"HGCalGeom") <<
"Index " <<
i <<
" Layer " << lay0 <<
":" << lay1 <<
" Wafer " <<
wmin <<
":"
105 <<
wmax <<
":" << kount;
110 waferMax_ = std::array<int, 4>{{wminT, wmaxT, kount1, kount2}};
112 edm::LogVerbatim(
"HGCalGeom") <<
"Overall wafer statistics: " << wminT <<
":" << wmaxT <<
":" << kount1 <<
":"
123 return std::make_pair(-1, -1);
133 <<
" ***** ERROR *****";
134 return std::make_pair(-1, -1);
140 return std::make_pair(wafer,
147 return std::make_pair(wafer,
155 return std::make_pair(-1, -1);
160 int waferU(0), waferV(0),
waferType(-1), cellU(0), cellV(0);
167 return std::array<int, 5>{{waferU, waferV,
waferType, cellU, cellV}};
174 return std::array<int, 3>{{irad,
iphi,
type}};
175 double xx = (
z > 0) ?
x : -
x;
177 double phi = (
r == 0. ? 0. : std::atan2(
y,
xx));
186 edm::LogVerbatim(
"HGCalGeom") <<
"assignCellTrap Input " <<
x <<
":" <<
y <<
":" <<
z <<
":" << layer <<
":" <<
reco
187 <<
" x|r " <<
xx <<
":" <<
r <<
" phi " <<
phi <<
" o/p " << irad <<
":" <<
iphi <<
":"
190 return std::array<int, 3>{{irad,
iphi,
type}};
200 return std::make_pair(
dr,
df);
204 const auto& indx =
getIndex(lay,
true);
205 if (indx.first >= 0) {
209 double rpos =
sqrt(
xy.first *
xy.first +
xy.second *
xy.second);
210 return ((rpos >=
hgpar_->
rMinLayHex_[indx.first]) && (rpos <= hgpar_->rMaxLayHex_[indx.first]));
226 thick = 100.0 * (
type + 1);
246 else if (cellV - cellU ==
N - 1)
250 }
else if (cellV == 0) {
251 if (cellU - cellV ==
N)
255 }
else if (cellU - cellV ==
N) {
256 if (cellU == 2 *
N - 1)
260 }
else if (cellU == 2 *
N - 1) {
261 if (cellV == 2 *
N - 1)
265 }
else if (cellV == 2 *
N - 1) {
266 if (cellV - cellU ==
N - 1)
270 }
else if (cellV - cellU ==
N - 1) {
272 }
else if ((cellU > 2 *
N - 1) || (cellV > 2 *
N - 1) || (cellV >= (cellU +
N)) || (cellU > (cellV +
N))) {
296 for (
int k = 0;
k < sizew; ++
k) {
318 edm::LogVerbatim(
"HGCalGeom") <<
"DistFromEdgeHex: Local " <<
xx <<
":" <<
yy <<
" wafer " << wafer <<
" flag "
329 double xx = (
z < 0) ? -
x :
x;
332 double phi = (
r == 0. ? 0. : std::atan2(
y,
xx));
346 edm::LogVerbatim(
"HGCalGeom") <<
"DistFromEdgeTrap: Global " <<
x <<
":" <<
y <<
":" <<
z <<
" Layer " << lay
347 <<
" Index " << indx <<
":" <<
type <<
" xx " <<
xx <<
" R " <<
r <<
":" << irad <<
":"
349 <<
" Phi " <<
phi <<
":" <<
iphi <<
":" << (
iphi - 0.5) * cell <<
" cell " << cell
350 <<
" Dphi " << dphi <<
" Dist " << dist <<
":" <<
r * dphi;
360 auto itr = std::find_if(zLayerHex.begin() + 1, zLayerHex.end(), [&
k, &
zz, &zLayerHex](
double zLayer) {
362 return zz < 0.5 * (zLayerHex[
k - 1] + zLayerHex[
k]);
364 int lay = (
itr == zLayerHex.end()) ? static_cast<int>(zLayerHex.size()) :
k;
381 <<
" ***** ERROR *****";
392 std::vector<HGCalParameters::hgtrap> mytrs;
401 int irmin(0), irmax(0);
409 return std::make_pair(irmin, irmax);
413 std::vector<HGCalParameters::hgtrform> mytrs;
446 bool result(
false), resultMod(
false);
452 const int32_t lay_idx =
reco ? (lay - 1) * 3 + 1 : lay;
454 auto moditr = the_modules.find(copyNumber);
455 result = resultMod = (moditr != the_modules.end());
458 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants: Layer " << lay <<
":" << lay_idx <<
" Copy " << copyNumber
462 if (moditr->second >= 0) {
464 edm::LogWarning(
"HGCalGeom") <<
"Module no. out of bound for " <<
mod <<
" to be compared with "
468 result = (cell >= 0 && cell <= cellmax);
479 << (lay > 0 && (lay <= (
int)(
layers(
reco)))) <<
" Module " <<
mod <<
":" << resultMod
480 <<
" Cell " << cell <<
":" << cellmax <<
":" << (cell >= 0 && cell <= cellmax) <<
":"
491 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:WaferType " << layer <<
":" << modU <<
":" << modV
500 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:WaferInfoMap " << layer <<
":" << modU <<
":"
508 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:WaferIn " << jtr->first <<
":" << jtr->second;
538 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:Cell " << cellU <<
":" << cellV <<
":" <<
N
539 <<
" Tests " << (cellU >= 0) <<
":" << (cellU < 2 *
N) <<
":" << (cellV >= 0) <<
":"
540 << (cellV < 2 *
N) <<
":" << ((cellV - cellU) <
N) <<
":" << ((cellU - cellV) <=
N);
542 if ((cellU < 0) || (cellU >= 2 *
N) || (cellV < 0) || (cellV >= 2 *
N))
544 if (((cellV - cellU) >=
N) || ((cellU - cellV) >
N))
552 const auto& indx =
getIndex(layer,
true);
555 return ((irad >=
hgpar_->
iradMinBH_[indx.first]) && (irad <= hgpar_->iradMaxBH_[indx.first]) && (
iphi > 0) &&
556 (iphi <= hgpar_->scintCells(layer)));
582 float x(999999.),
y(999999.);
586 return std::make_pair(
x,
y);
601 edm::LogVerbatim(
"HGCalGeom") <<
"LocateCell (Wafer) " << x0 <<
":" << y0 <<
" Final " <<
x <<
":" <<
y;
608 return std::make_pair(
x,
y);
612 int lay,
int waferU,
int waferV,
int cellU,
int cellV,
bool reco,
bool all,
bool debug)
const {
619 edm::LogVerbatim(
"HGCalGeom") <<
"LocateCell " << lay <<
":" << waferU <<
":" << waferV <<
":" << indx <<
":"
622 int kndx = cellV * 100 + cellU;
631 edm::LogVerbatim(
"HGCalGeom") <<
"Fine " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":"
642 edm::LogVerbatim(
"HGCalGeom") <<
"Coarse " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":"
659 return std::make_pair(
x,
y);
669 double xpos = xyoff.first + ((-2 *
id.waferU() +
id.waferV()) *
r);
670 double ypos = xyoff.second + (1.5 *
id.waferV() *
R);
672 edm::LogVerbatim(
"HGCalGeom") <<
"LocateCell " <<
id <<
" Lay " << lay <<
" r:R " <<
r <<
":" <<
R <<
" N "
673 << ncells <<
":" << n2 <<
" Off " << xyoff.first <<
":" << xyoff.second <<
" Pos "
674 << xpos <<
":" << ypos;
677 xpos += ((1.5 * (
id.cellV() - ncells) + 1.0) * R1);
678 ypos += ((
id.cellU() - 0.5 *
id.cellV() - n2) * 2 *
r1);
681 << ((1.5 * (
id.cellV() - ncells) + 1.0) * R1) <<
":"
682 << ((
id.cellU() - 0.5 *
id.cellV() - n2) * 2 *
r1) <<
" Pos " << xpos <<
":" << ypos;
683 return std::make_pair(xpos *
id.
zside(), ypos);
687 int lay(
id.layer()),
iphi(
id.
iphi()), ir(
id.iradiusAbs());
689 int type = (
id.type() > 0) ? 1 : 0;
713 return std::make_pair(
x,
y);
719 if (indx.first >= 0) {
722 double phi = (
iphi - 0.5) * indx.second;
730 <<
z <<
" phi " <<
phi <<
" R " <<
r <<
":" <<
range.first <<
":" <<
range.second;
742 return std::make_pair(
x,
y);
749 int N(0), layer(0), waferU(0), waferV(0), u(0),
v(0);
754 waferU =
id.waferU();
755 waferV =
id.waferV();
762 waferU =
id.waferU();
763 waferV =
id.waferV();
770 edm::LogVerbatim(
"HGCalGeom") <<
"MaskCell: Layer " << layer <<
" Wafer " << waferU <<
":" << waferV <<
" Index "
800 unsigned int cells(0);
852 return (((type1 == type2) || (type1 * type2 != 0)) ? uv : ((type1 == 0) ? (2 * uv + 1) / 3 : (3 * uv) / 2));
885 for (
unsigned k = 0;
k < nlayer; ++
k) {
887 cells = std::accumulate(ncells.begin(), ncells.end(),
cells);
895 std::vector<int> ncell;
903 ncell.emplace_back((
int)(cell));
909 ncell.emplace_back(
nphi);
917 ncell.emplace_back(cell);
948 double rmin(0), rmax(0),
zz(0);
969 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants:rangeR: " <<
z <<
":" <<
zz <<
" R " << rmin <<
":" << rmax;
971 return std::make_pair(rmin, rmax);
975 double rmin(0), rmax(0);
986 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants:rangeR: " << lay <<
":" <<
index.first <<
" R " << rmin <<
":"
989 return std::make_pair(rmin, rmax);
1013 return std::make_pair(row,
col);
1018 return std::make_pair(cell, lay);
1023 edm::LogWarning(
"HGCalGeom") <<
"Wrong Layer # " << lay <<
" not in the list ***** ERROR *****";
1024 return std::make_pair(-1, -1);
1028 <<
" ***** ERROR *****";
1029 return std::make_pair(-1, -1);
1036 }
else if (
type == 2) {
1041 return std::make_pair(kx,
depth);
1049 for (
int k = 0;
k < ncopies; ++
k) {
1059 edm::LogVerbatim(
"HGCalGeom") <<
"Cannot find " <<
copy <<
" in a list of " << ncopies <<
" members";
1060 for (
int k = 0;
k < ncopies; ++
k)
1076 for (
int k = 0;
k < size_; ++
k) {
1089 if (wafer < size_) {
1102 edm::LogWarning(
"HGCalGeom") <<
"Cannot get wafer type corresponding to " <<
x <<
":" <<
y <<
" " <<
xx <<
":"
1107 edm::LogVerbatim(
"HGCalGeom") <<
"Position " <<
x <<
":" <<
y <<
" Wafer " << wafer <<
":" << size_ <<
" XX " <<
xx
1108 <<
":" <<
yy <<
" Cell " << icell <<
" Type " << celltyp;
1143 edm::LogVerbatim(
"HGCalGeom") <<
"WaferFromPosition:: Input " << layer <<
":" << ll <<
":"
1148 <<
" comparator " <<
rmax_ <<
":" <<
hexside_ <<
" wafer " << waferU <<
":"
1149 << waferV <<
":" << celltype;
1169 edm::LogVerbatim(
"HGCalGeom") <<
"waferFromPosition: Bad type for X " <<
x <<
":" <<
x1 <<
":" <<
xx <<
" Y " <<
y
1170 <<
":" <<
y1 <<
":" <<
yy <<
" Wafer " << waferU <<
":" << waferV <<
" Cell " << cellU
1206 double xx(0),
yy(0);
1215 return std::make_pair(
xx,
yy);
1219 int lay,
int waferU,
int waferV,
bool reco,
bool debug)
const {
1240 return std::make_pair(
x,
y);
1247 int layer(0), waferU(0), waferV(0);
1250 layer = hid.
layer();
1255 layer = hid.
layer();
1330 int layer,
int waferU,
int waferV,
bool fromFile,
bool debug)
const {
1333 bool withinList(
true);
1369 edm::LogVerbatim(
"HGCalGeom") <<
"waferTypeRotation: Layer " << layer <<
" Wafer " << waferU <<
":" << waferV
1370 <<
" Index " << std::hex <<
wl <<
std::dec <<
":" << withinList <<
" Type " <<
type
1371 <<
" Rotation " << rotn;
1373 return std::make_pair(
type, rotn);
1390 if (
index.first < 0)
1399 for (
unsigned int i = 0;
i <
layers(
true); ++
i) {
1415 wafer = (
itr->second)[ity];
1425 double xx,
double yy,
const double& cellR,
const std::vector<double>&
posX,
const std::vector<double>&
posY)
const {
1427 const double tol(0.00001);
1429 for (
unsigned int k = 0;
k <
posX.size(); ++
k) {
1432 if (
dx <= (cellR + tol) &&
dy <= (cellY + tol)) {
1433 double xmax = (
dy <= 0.5 * cellY) ? cellR : (cellR - (
dy - 0.5 * cellY) /
tan30deg_);
1434 if (
dx <= (
xmax + tol)) {
1445 double Rc = 2 *
rmax_ / (3 *
N);
1446 double rc = 0.5 * Rc *
sqrt3_;
1447 double v0 = ((xloc / Rc - 1.0) / 1.5);
1448 int cv0 = (
v0 > 0) ? (
N + (
int)(
v0 + 0.5)) : (
N - (
int)(-
v0 + 0.5));
1449 double u0 = (0.5 * yloc / rc + 0.5 * cv0);
1450 int cu0 = (u0 > 0) ? (
N / 2 + (
int)(u0 + 0.5)) : (
N / 2 - (
int)(-u0 + 0.5));
1457 edm::LogVerbatim(
"HGCalGeom") <<
"cellHex: input " << xloc <<
":" << yloc <<
":" <<
cellType <<
" parameter " << rc
1458 <<
":" << Rc <<
" u0 " << u0 <<
":" << cu0 <<
" v0 " <<
v0 <<
":" << cv0;
1461 static const int shift[3] = {0, 1, -1};
1462 for (
int i1 = 0;
i1 < 3; ++
i1) {
1464 for (
int i2 = 0;
i2 < 3; ++
i2) {
1466 if (((cellV - cellU) <
N) && ((cellU - cellV) <=
N) && (cellU >= 0) && (cellV >= 0) && (cellU < 2 *
N) &&
1468 double xc = (1.5 * (cellV -
N) + 1.0) * Rc;
1469 double yc = (2 * cellU - cellV -
N) * rc;
1475 <<
"cellHex: local " << xc <<
":" << yc <<
" difference " <<
std::abs(xloc - xc) <<
":"
1477 << Rc <<
" (u,v) = (" << cellU <<
"," << cellV <<
")";
1496 return std::make_pair(-1, 0);
1507 return std::make_pair(indx, cell);
1547 edm::LogVerbatim(
"HGCalGeom") <<
"Input " << lay <<
":" << wafer <<
":" << cell <<
" Position " <<
x <<
":" <<
y
1556 int kndx = cellV * 100 + cellU;
1564 edm::LogVerbatim(
"HGCalGeom") <<
"Fine " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":"
1574 edm::LogVerbatim(
"HGCalGeom") <<
"Coarse " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":"
1582 edm::LogVerbatim(
"HGCalGeom") <<
"With wafer (" << waferU <<
"," << waferV <<
") " <<
x <<
":" <<
y;
1588 edm::LogVerbatim(
"HGCalGeom") <<
"Input " << lay <<
":" << ll <<
":" << waferU <<
":" << waferV <<
":" << cellU <<
":"
1589 << cellV <<
" Position " <<
x <<
":" <<
y <<
":" <<
rr <<
" Compare Limits "
1596 edm::LogVerbatim(
"HGCalGeom") <<
"Input " << lay <<
":" << waferU <<
":" << waferV <<
":" << cellU <<
":" << cellV
1597 <<
" N " <<
N <<
" part " << partn.first <<
":" << partn.second <<
" Result "
1609 edm::LogVerbatim(
"HGCalGeom") <<
"WaferIndex for " << wafer <<
":" <<
index <<
" (" << layer <<
":" << waferU <<
":"
1610 << waferV <<
") " << indx;
1627 edm::LogVerbatim(
"HGCalGeom") <<
"WaferInLayerTest: Layer " << lay <<
" wafer " << wafer <<
" index " << indx
1634 edm::LogVerbatim(
"HGCalGeom") <<
"WaferInLayerTest: Layer " << lay <<
" wafer " << wafer <<
" R-limits "
1642 double xx(0),
yy(0);
1653 return std::make_pair(
xx,
yy);
static int32_t waferV(const int32_t index)
std::vector< bool > cellCoarseHalf_
constexpr static double tan30deg_
std::vector< double > moduleCellS_
void waferFromPosition(const double x, const double y, int &wafer, int &icell, int &celltyp) const
int32_t maxWafersPerLayer_
static bool goodCell(int u, int v, int N, int type, int rotn)
int cellHex(double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
std::pair< double, double > rangeZ(bool reco) const
int modulesInit(int lay, bool reco) const
std::vector< double > zLayerHex_
std::unordered_map< int32_t, bool > waferIn_
bool isValidCell(int layindex, int wafer, int cell) const
std::vector< double > moduleCellR_
std::vector< double > zFrontMin_
std::pair< float, float > locateCellTrap(int lay, int ieta, int iphi, bool reco) const
hgtrap getModule(unsigned int k, bool reco) const
bool isValidHex(int lay, int mod, int cell, bool reco) const
constexpr NumType convertRadToDeg(NumType radians)
std::vector< double > rMaxLayHex_
std::vector< double > cellFineY_
int layer() const
get the layer #
std::pair< double, double > cellEtaPhiTrap(int type, int irad) const
constexpr Detector det() const
get the detector field from this detid
T mod(const T &a, const T &b)
std::pair< double, double > rangeRLayer(int lay, bool reco) const
double waferZ(int layer, bool reco) const
std::pair< int, int > getREtaRange(int lay) const
static constexpr uint32_t k_CornerSize
bool waferHexagon8() const
std::vector< double > slopeTop_
bool waferFullInLayer(int wafer, int lay, bool reco) const
std::vector< int > layerIndex_
double distFromEdgeTrap(double x, double y, double z) const
std::vector< double > yLayerHex_
double scintCellSize(const int layer) const
U second(std::pair< T, U > const &p)
wafer_map wafersInLayers_
static constexpr int32_t WaferCornerMin
std::array< int, 5 > assignCellHex(float x, float y, int lay, bool reco) const
int getPhiBins(int lay) const
std::vector< int > moduleLayR_
int getTypeHex(int layer, int waferU, int waferV) const
bool isHalfCell(int waferType, int cell) const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< int > waferUVMaxLayer_
std::vector< int > iradMaxBH_
std::pair< double, double > waferParameters(bool reco) const
int lastLayer(bool reco) const
Log< level::Warning, false > LogWarning
Simrecovecs max_modules_layer_
HGCalGeomTools geomTools_
std::vector< double > waferPosY_
Sin< T >::type sin(const T &t)
int layerFromIndex(int index, bool reco) const
std::pair< int, int > waferTypeRotation(int layer, int waferU, int waferV, bool fromFile=false, bool debug=false) const
bool isValidHex8(int lay, int waferU, int waferV, bool fullAndPart=false) const
int waferType(DetId const &id, bool fromFile=false) const
bool waferHexagon6() const
std::vector< uint32_t > trformIndex_
std::pair< int, int > simToReco(int cell, int layer, int mod, bool half) const
bool isValidCell8(int lay, int waferU, int waferV, int cellU, int cellV, int type) const
Cos< T >::type cos(const T &t)
HGCalGeometryMode::GeometryMode mode_
std::vector< double > radiusLayer_[2]
std::vector< bool > cellFineHalf_
int maxCells(bool reco) const
std::vector< int > layerGroup_
std::vector< double > radiusMixBoundary_
std::vector< double > waferPosX_
bool waferInLayer(int wafer, int lay, bool reco) const
HGCalDDDConstants(const HGCalParameters *hp, const std::string &name)
int layerIndex(int lay, bool reco) const
std::vector< double > rMinLayHex_
int getType(double xpos, double ypos, double zpos)
unsigned int waferFileSize() const
hgtrform getTrForm(unsigned int k) const
std::vector< int > waferCopy_
std::pair< double, double > rangeR(double z, bool reco) const
std::vector< int > iradMinBH_
static int32_t waferU(const int32_t index)
std::pair< int, int > assignCell(float x, float y, int lay, int subSec, bool reco) const
static int32_t getUnpackedU(int id)
double mouseBite(bool reco) const
std::vector< double > cellSize_
bool tileTrapezoid() const
bool cellInLayer(int waferU, int waferV, int cellU, int cellV, int lay, bool reco) const
std::vector< int > firstModule_
int type() const
get the type
std::map< int, HGCWaferParam > waferLayer_
int numberCells(bool reco) const
std::vector< int > depth_
std::vector< double > rMaxFront_
std::pair< int, float > getIndex(int lay, bool reco) const
HGCalGeometryMode::GeometryMode mode_
std::vector< double > cellCoarseY_
static int32_t getUnpackedV(int id)
unsigned int layers(bool reco) const
int scintType(const int layer) const
int scintCells(const int layer) const
std::vector< int > layerGroupO_
std::vector< HGCalParameters::hgtrform > getTrForms() const
int getTypeTrap(int layer) const
double cellSizeHex(int type) const
std::vector< int > layerGroupM_
double cellThickness(int layer, int waferU, int waferV) const
bool isValidTrap(int lay, int ieta, int iphi) const
int getUVMax(int type) const
std::vector< std::pair< float, float > >::iterator itr
#define TYPELOOKUP_DATA_REG(_dataclass_)
std::pair< int, int > rowColumnWafer(const int wafer) const
bool waferVirtual(int layer, int waferU, int waferV) const
HGCalParameters::hgtrform getTrForm(unsigned int k) const
std::vector< HGCalParameters::hgtrap > getModules() const
static constexpr double k_ScaleFromDDD
std::vector< int > waferTypeT_
std::array< int, 4 > waferMax_
std::array< uint32_t, 2 > tot_layers_
int numberCellsHexagon(int wafer) const
std::array< int, 3 > assignCellTrap(float x, float y, float z, int lay, bool reco) const
static const int k_OffsetRotation
static constexpr double k_ScaleToDDD
HGCalTypes::CellType cellType(int type, int waferU, int waferV) const
std::pair< float, float > locateCellHex(int cell, int wafer, bool reco) const
waferInfo_map waferInfoMap_
static unsigned const int shift
std::vector< double > slopeMin_
std::vector< int > depthIndex_
std::vector< double > xLayerHex_
Log< level::Info, true > LogVerbatim
std::pair< double, double > waferPosition(int wafer, bool reco) const
std::vector< int > layerCenter_
std::vector< double > rMinFront_
int maxRows(int lay, bool reco) const
std::vector< int > lastModule_
int modules(int lay, bool reco) const
int type() const
get the type
std::vector< double > cellFineX_
double distFromEdgeHex(double x, double y, double z) const
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
std::vector< double > cellThickness_
int getLayer(double z, bool reco) const
int waferTypeL(int wafer) const
std::vector< int > waferTypeL_
std::vector< double > cellCoarseX_
Abs< T >::type abs(const T &t)
std::vector< int > layer_
unsigned int getTrFormN() const
unsigned int layersInit(bool reco) const
std::pair< float, float > locateCell(int cell, int lay, int type, bool reco) const
wafer_map cellCoarseIndex_
std::vector< int > depthLayerF_
int32_t waferIndex(int wafer, int index) const
std::vector< double > zFrontTop_
int modifyUV(int uv, int type1, int type2) const
int waferFromCopy(int copy) const
const HGCalParameters * hgpar_
bool maskCell(const DetId &id, int corners) const
static bool maskCell(int u, int v, int N, int ncor, int fcor, int corners)
static int32_t waferLayer(const int32_t index)
std::array< int, 3 > HGCWaferParam
bool waferInLayerTest(int wafer, int lay, bool full) const
int layer() const
get the layer #
HGCalParameters::hgtrap getModule(unsigned int k, bool hexType, bool reco) const
layer_map copiesInLayers_