50 for (
int simreco = 0; simreco < 2; ++simreco) {
80 int wminT(9999999), wmaxT(-9999999), kount1(0), kount2(0);
83 int wmin(9999999),
wmax(-9999999), kount(0);
84 for (
int wafer = 0; wafer <
sectors(); ++wafer) {
109 int lay1 =
getIndex(lay0,
true).first;
110 edm::LogVerbatim(
"HGCalGeom") <<
"Index " <<
i <<
" Layer " << lay0 <<
":" << lay1 <<
" Wafer " <<
wmin <<
":" 111 <<
wmax <<
":" << kount;
116 waferMax_ = std::array<int, 4>{{wminT, wmaxT, kount1, kount2}};
118 edm::LogVerbatim(
"HGCalGeom") <<
"Overall wafer statistics: " << wminT <<
":" << wmaxT <<
":" << kount1 <<
":" 129 return std::make_pair(-1, -1);
139 <<
" ***** ERROR *****";
140 return std::make_pair(-1, -1);
146 return std::make_pair(wafer,
153 return std::make_pair(wafer,
161 return std::make_pair(-1, -1);
166 float x,
float y,
int lay,
bool reco,
bool extend,
bool debug)
const {
173 edm::LogVerbatim(
"HGCalGeom") <<
"assignCellHex x " <<
x <<
":" <<
xx <<
" y " <<
y <<
":" <<
yy <<
" Lay " << lay;
175 waferFromPosition(
xx,
yy, lay,
waferU,
waferV, cellU, cellV,
waferType, wt, extend,
debug);
184 return std::array<int, 3>{{irad,
iphi,
type}};
185 double xx = (
z > 0) ?
x : -
x;
187 double phi = (
r == 0. ? 0. : std::atan2(
y,
xx));
197 <<
" x|r " <<
xx <<
":" <<
r <<
" phi " <<
phi <<
" o/p " << irad <<
":" <<
iphi <<
":" 200 return std::array<int, 3>{{irad,
iphi,
type}};
210 return std::make_pair(
dr,
df);
214 const auto& indx =
getIndex(lay,
true);
215 if (indx.first >= 0) {
219 double rpos =
sqrt(
xy.first *
xy.first +
xy.second *
xy.second);
220 return ((rpos >=
hgpar_->
rMinLayHex_[indx.first]) && (rpos <= hgpar_->rMaxLayHex_[indx.first]));
236 thick = 100.0 * (
type + 1);
273 for (
int k = 0;
k < sizew; ++
k) {
295 edm::LogVerbatim(
"HGCalGeom") <<
"DistFromEdgeHex: Local " <<
xx <<
":" <<
yy <<
" wafer " << wafer <<
" flag " 306 double xx = (
z < 0) ? -
x :
x;
309 double phi = (
r == 0. ? 0. : std::atan2(
y,
xx));
323 edm::LogVerbatim(
"HGCalGeom") <<
"DistFromEdgeTrap: Global " <<
x <<
":" <<
y <<
":" <<
z <<
" Layer " << lay
324 <<
" Index " << indx <<
":" <<
type <<
" xx " <<
xx <<
" R " <<
r <<
":" << irad <<
":" 326 <<
" Phi " <<
phi <<
":" <<
iphi <<
":" << (
iphi - 0.5) * cell <<
" cell " << cell
327 <<
" Dphi " << dphi <<
" Dist " << dist <<
":" <<
r * dphi;
337 auto itr = std::find_if(zLayerHex.begin() + 1, zLayerHex.end(), [&
k, &
zz, &zLayerHex](
double zLayer) {
339 return zz < 0.5 * (zLayerHex[
k - 1] + zLayerHex[
k]);
341 int lay = (itr == zLayerHex.end()) ? static_cast<int>(zLayerHex.size()) :
k;
358 <<
" ***** ERROR *****";
369 std::vector<HGCalParameters::hgtrap> mytrs;
378 int irmin(0), irmax(0);
386 return std::make_pair(irmin, irmax);
390 std::vector<HGCalParameters::hgtrform> mytrs;
428 double x1(x0),
y1(y0);
438 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants: Layer " <<
layer <<
":" << ll <<
" mode " << forwd <<
" x " <<
x 439 <<
":" << x0 <<
":" <<
x1 <<
" y " <<
y <<
":" << y0 <<
":" <<
y1;
441 return std::make_pair(x0, y0);
452 bool result(
false), resultMod(
false);
458 const int32_t lay_idx =
reco ? (lay - 1) * 3 + 1 : lay;
460 auto moditr = the_modules.find(copyNumber);
461 result = resultMod = (moditr != the_modules.end());
464 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants: Layer " << lay <<
":" << lay_idx <<
" Copy " << copyNumber
468 if (moditr->second >= 0) {
470 edm::LogWarning(
"HGCalGeom") <<
"Module no. out of bound for " <<
mod <<
" to be compared with " 474 result = (cell >= 0 && cell <= cellmax);
485 << (lay > 0 && (lay <= (
int)(
layers(
reco)))) <<
" Module " <<
mod <<
":" << resultMod
486 <<
" Cell " << cell <<
":" << cellmax <<
":" << (cell >= 0 && cell <= cellmax) <<
":" 497 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:WaferType " <<
layer <<
":" << modU <<
":" << modV
506 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:WaferInfoMap " <<
layer <<
":" << modU <<
":" 514 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:WaferIn " << jtr->first <<
":" << jtr->second;
544 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants::isValidHex8:Cell " << cellU <<
":" << cellV <<
":" <<
N 545 <<
" Tests " << (cellU >= 0) <<
":" << (cellU < 2 *
N) <<
":" << (cellV >= 0) <<
":" 546 << (cellV < 2 *
N) <<
":" << ((cellV - cellU) <
N) <<
":" << ((cellU - cellV) <=
N);
548 if ((cellU < 0) || (cellU >= 2 *
N) || (cellV < 0) || (cellV >= 2 *
N))
550 if (((cellV - cellU) >=
N) || ((cellU - cellV) >
N))
562 (iphi <= hgpar_->scintCells(
layer)));
593 <<
" Local (" <<
x <<
":" <<
y <<
") Reco " <<
reco;
602 edm::LogVerbatim(
"HGCalGeom") <<
"With wafer " <<
x <<
":" <<
y <<
" by adding " <<
xy.first <<
":" <<
xy.second;
603 return (rotx ?
getXY(lay,
x,
y,
false) : std::make_pair(
x,
y));
608 float x(999999.),
y(999999.);
612 return std::make_pair(
x,
y);
627 edm::LogVerbatim(
"HGCalGeom") <<
"LocateCell (Wafer) " << x0 <<
":" << y0 <<
" Final " <<
x <<
":" <<
y;
634 return std::make_pair(
x,
y);
643 bool rotx = (norot) ?
false 652 int kndx = cellV * 100 + cellU;
660 edm::LogVerbatim(
"HGCalGeom") <<
"Fine " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":" 669 edm::LogVerbatim(
"HGCalGeom") <<
"Coarse " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":" 681 edm::LogVerbatim(
"HGCalGeom") <<
"With wafer " <<
x <<
":" <<
y <<
" by adding " <<
xy.first <<
":" <<
xy.second;
683 return (rotx ?
getXY(lay,
x,
y,
false) : std::make_pair(
x,
y));
693 double xpos = xyoff.first + ((-2 *
id.waferU() +
id.waferV()) *
r);
694 double ypos = xyoff.second + (1.5 *
id.waferV() *
R);
697 edm::LogVerbatim(
"HGCalGeom") <<
"LocateCell " <<
id <<
" Lay " << lay <<
" r:R " <<
r <<
":" <<
R <<
" N " 698 << ncells <<
":" << n2 <<
" Off " << xyoff.first <<
":" << xyoff.second <<
" Pos " 699 << xpos <<
":" << ypos;
703 xpos += ((1.5 * (
id.cellV() - ncells) + 1.0) * R1);
704 ypos += ((
id.cellU() - 0.5 *
id.cellV() - n2) * 2 *
r1);
708 << ((1.5 * (
id.cellV() - ncells) + 1.0) * R1) <<
":" 709 << ((
id.cellU() - 0.5 *
id.cellV() - n2) * 2 *
r1) <<
" Pos " << xpos <<
":" << ypos;
711 std::pair<double, double>
xy =
getXY(
id.
layer(), xpos, ypos,
true);
712 return std::make_pair(
xy.first *
id.zside(),
xy.second);
718 int type = (
id.type() > 0) ? 1 : 0;
744 return std::make_pair(
x,
y);
750 if (indx.first >= 0) {
753 double phi = (
iphi - 0.5) * indx.second;
761 <<
z <<
" phi " <<
phi <<
" R " <<
r <<
":" <<
range.first <<
":" <<
range.second;
774 return std::make_pair(
x,
y);
832 unsigned int cells(0);
884 return (((type1 == type2) || (type1 * type2 != 0)) ? uv : ((type1 == 0) ? (2 * uv + 1) / 3 : (3 * uv) / 2));
921 for (
unsigned k = 0;
k < nlayer; ++
k) {
923 cells = std::accumulate(ncells.begin(), ncells.end(),
cells);
932 std::vector<int> ncell;
940 ncell.emplace_back((
int)(cell));
946 ncell.emplace_back(
nphi);
954 ncell.emplace_back(cell);
985 double rmin(0), rmax(0),
zz(0);
1006 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants:rangeR: " <<
z <<
":" <<
zz <<
" R " << rmin <<
":" << rmax;
1008 return std::make_pair(rmin, rmax);
1012 double rmin(0), rmax(0);
1023 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalDDDConstants:rangeR: " << lay <<
":" <<
index.first <<
" R " << rmin <<
":" 1026 return std::make_pair(rmin, rmax);
1050 return std::make_pair(row,
col);
1055 return std::make_pair(cell, lay);
1060 edm::LogWarning(
"HGCalGeom") <<
"Wrong Layer # " << lay <<
" not in the list ***** ERROR *****";
1061 return std::make_pair(-1, -1);
1065 <<
" ***** ERROR *****";
1066 return std::make_pair(-1, -1);
1073 }
else if (
type == 2) {
1078 return std::make_pair(kx,
depth);
1088 for (
int lay = laymin; lay <= laymax; ++lay) {
1094 for (
int rin = ringmin; rin <= ringmax; ++rin) {
1098 for (
int k = 0;
k < 4; ++
k) {
1099 std::bitset<24>
b(itr->second.hex[
k]);
1112 for (
int k = 0;
k < ncopies; ++
k) {
1122 edm::LogVerbatim(
"HGCalGeom") <<
"Cannot find " <<
copy <<
" in a list of " << ncopies <<
" members";
1123 for (
int k = 0;
k < ncopies; ++
k)
1139 for (
int k = 0;
k < size_; ++
k) {
1152 if (wafer < size_) {
1165 edm::LogWarning(
"HGCalGeom") <<
"Cannot get wafer type corresponding to " <<
x <<
":" <<
y <<
" " <<
xx <<
":" 1170 edm::LogVerbatim(
"HGCalGeom") <<
"Position " <<
x <<
":" <<
y <<
" Wafer " << wafer <<
":" << size_ <<
" XX " <<
xx 1171 <<
":" <<
yy <<
" Cell " << icell <<
" Type " << celltyp;
1187 cellU = cellV = celltype = 0;
1192 double xx(0),
yy(0);
1194 std::pair<double, double>
xy =
1204 edm::LogVerbatim(
"HGCalGeom") <<
"waferFromPosition:: Layer " <<
layer <<
":" << ll <<
" Rot " << rotx <<
" X " <<
x 1205 <<
":" <<
xx <<
" Y " <<
y <<
":" <<
yy;
1212 if (
dx <= rmax &&
dy <= hexside) {
1233 <<
waferV <<
":" << celltype;
1251 if ((celltype < 0) &&
debug) {
1254 edm::LogVerbatim(
"HGCalGeom") <<
"waferfFromPosition: Bad type for X " <<
x <<
":" <<
x1 <<
":" <<
xx <<
" Y " <<
y 1255 <<
":" <<
y1 <<
":" <<
yy <<
" Wafer " <<
waferU <<
":" <<
waferV <<
" Cell " << cellU
1262 <<
dx *
tan30deg_ <<
":" << hexside -
dy <<
" Paramerers " << rmax <<
":" 1290 double xx(0),
yy(0);
1299 return std::make_pair(
xx,
yy);
1308 edm::LogVerbatim(
"HGCalGeom") <<
"Layer " << lay <<
":" << ll <<
" Rotation " << rotx <<
" U:V " <<
waferU <<
":" 1312 std::pair<double, double> xy0 = (rotx) ?
getXY(lay,
xy.first,
xy.second,
false) :
xy;
1315 edm::LogVerbatim(
"HGCalGeom") <<
"Without and with rotation " <<
xy.first <<
":" <<
xy.second <<
":" << xy0.first
1316 <<
":" << xy0.second;
1339 type = (itr->second).type;
1355 type = (itr->second).type;
1411 bool withinList(
true);
1417 rotn = (itr->second).
orient;
1425 rotn = (itr->second).
second;
1448 <<
" Index " << std::hex <<
wl <<
std::dec <<
":" << withinList <<
" Type " <<
type 1449 <<
" Rotation " << rotn;
1451 return std::make_pair(
type, rotn);
1468 if (
index.first < 0)
1477 for (
unsigned int i = 0;
i <
layers(
true); ++
i) {
1493 wafer = (itr->second)[ity];
1503 double xx,
double yy,
const double& cellR,
const std::vector<double>&
posX,
const std::vector<double>&
posY)
const {
1505 const double tol(0.00001);
1507 for (
unsigned int k = 0;
k <
posX.size(); ++
k) {
1510 if (
dx <= (cellR + tol) &&
dy <= (cellY + tol)) {
1511 double xmax = (
dy <= 0.5 * cellY) ? cellR : (cellR - (
dy - 0.5 * cellY) /
tan30deg_);
1512 if (
dx <= (
xmax + tol)) {
1522 double xloc,
double yloc,
int cellType,
int& cellU,
int& cellV,
bool extend,
bool debug)
const {
1524 double Rc = 2 *
rmax_ / (3 *
N);
1525 double rc = 0.5 * Rc *
sqrt3_;
1526 double RcT = (extend) ? (2 *
rmaxT_ / (3 *
N)) : Rc;
1527 double rcT = 0.5 * RcT *
sqrt3_;
1528 double v0 = ((xloc / Rc - 1.0) / 1.5);
1529 int cv0 = (
v0 > 0) ? (
N + (
int)(
v0 + 0.5)) : (
N - (
int)(-
v0 + 0.5));
1530 double u0 = (0.5 * yloc / rc + 0.5 * cv0);
1531 int cu0 = (u0 > 0) ? (
N / 2 + (
int)(u0 + 0.5)) : (
N / 2 - (
int)(-u0 + 0.5));
1538 edm::LogVerbatim(
"HGCalGeom") <<
"cellHex: input " << xloc <<
":" << yloc <<
":" <<
cellType <<
" parameter " << rc
1539 <<
":" << Rc <<
" u0 " << u0 <<
":" << cu0 <<
" v0 " <<
v0 <<
":" << cv0;
1542 static constexpr
int shift[3] = {0, 1, -1};
1543 for (
int i1 = 0;
i1 < 3; ++
i1) {
1545 for (
int i2 = 0;
i2 < 3; ++
i2) {
1547 if (((cellV - cellU) <
N) && ((cellU - cellV) <=
N) && (cellU >= 0) && (cellV >= 0) && (cellU < 2 *
N) &&
1549 double xc = (1.5 * (cellV -
N) + 1.0) * Rc;
1550 double yc = (2 * cellU - cellV -
N) * rc;
1556 <<
"cellHex: local " << xc <<
":" << yc <<
" difference " <<
std::abs(xloc - xc) <<
":" 1558 << Rc <<
" (u,v) = (" << cellU <<
"," << cellV <<
")";
1577 return std::make_pair(-1, 0);
1588 return std::make_pair(indx, cell);
1628 edm::LogVerbatim(
"HGCalGeom") <<
"Input " << lay <<
":" << wafer <<
":" << cell <<
" Position " <<
x <<
":" <<
y 1637 int kndx = cellV * 100 + cellU;
1645 edm::LogVerbatim(
"HGCalGeom") <<
"Fine " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":" 1655 edm::LogVerbatim(
"HGCalGeom") <<
"Coarse " << cellU <<
":" << cellV <<
":" << kndx <<
":" <<
x <<
":" <<
y <<
":" 1670 << cellV <<
" Position " <<
x <<
":" <<
y <<
":" <<
rr <<
" Compare Limits " 1679 <<
" N " <<
N <<
" part " << partn.first <<
":" << partn.second <<
" Result " 1693 <<
waferV <<
") " << indx;
1711 edm::LogVerbatim(
"HGCalGeom") <<
"WaferInLayerTest: Layer " << lay <<
" wafer " << wafer <<
" index " << indx
1718 edm::LogVerbatim(
"HGCalGeom") <<
"WaferInLayerTest: Layer " << lay <<
" wafer " << wafer <<
" R-limits " 1747 return std::make_pair(
x,
y);
1751 double xx(0),
yy(0);
1762 return std::make_pair(
xx,
yy);
std::vector< int > iradMaxBH_
bool maskCell(const DetId &id, int corners) const
std::pair< double, double > rangeRLayer(int lay, bool reco) const
double waferZ(int layer, bool reco) const
std::vector< double > waferPosY_
Log< level::Info, true > LogVerbatim
std::vector< int > layer_
static constexpr int scintillatorCassette
void waferFromPosition(const double x, const double y, int &wafer, int &icell, int &celltyp) const
std::pair< double, double > rangeZ(bool reco) const
std::vector< int > depthLayerF_
std::vector< int > depth_
std::vector< double > zFrontMin_
std::vector< double > moduleCellR_
unsigned int layersInit(bool reco) const
hgtrap getModule(unsigned int k, bool reco) const
static constexpr int32_t cellPlacementOld
bool isValidCell(int layindex, int wafer, int cell) const
layer_map copiesInLayers_
std::vector< std::pair< double, double > > layerRotV_
int getPhiBins(int lay) const
int layer() const
get the layer #
std::pair< double, double > cellEtaPhiTrap(int type, int irad) const
std::vector< bool > cellCoarseHalf_
int scintType(const int layer) const
std::vector< bool > cellFineHalf_
static std::pair< int32_t, int32_t > cellType(int32_t u, int32_t v, int32_t ncell, int32_t placementIndex)
std::pair< double, double > waferParameters(bool reco) const
bool waferInLayerTest(int wafer, int lay, bool full) const
static int32_t getUnpackedU(int id)
std::vector< int > moduleLayR_
bool waferFullInLayer(int wafer, int lay, bool reco) const
int32_t maxWafersPerLayer_
double distFromEdgeTrap(double x, double y, double z) const
Simrecovecs max_modules_layer_
HGCalParameters::hgtrap getModule(unsigned int k, bool hexType, bool reco) const
int32_t waferU(const int32_t index)
int32_t waferLayer(const int32_t index)
constexpr NumType convertRadToDeg(NumType radians)
bool isValidHex(int lay, int mod, int cell, bool reco) const
static bool goodCell(int u, int v, int N, int type, int rotn)
bool isValidHex8(int lay, int waferU, int waferV, bool fullAndPart=false) const
static constexpr int32_t WaferOut
std::pair< int, int > waferTypeRotation(int layer, int waferU, int waferV, bool fromFile=false, bool debug=false) const
Sin< T >::type sin(const T &t)
static constexpr int32_t WaferThree
std::vector< double > cellFineY_
std::pair< int, int > getREtaRange(int lay) const
int lastLayer(bool reco) const
static int32_t getUnpackedV(int id)
std::pair< double, double > getXY(int layer, double x, double y, bool forwd) const
bool waferHexagon8() const
int modulesInit(int lay, bool reco) const
std::unordered_map< int32_t, bool > waferIn_
int layerFromIndex(int index, bool reco) const
std::vector< uint32_t > trformIndex_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
int32_t cellType(int type, int waferU, int waferV, int iz, int fwdBack, int orient) const
std::vector< int > layerGroupM_
bool waferHexagon6() const
constexpr Detector det() const
get the detector field from this detid
hgtrform getTrForm(unsigned int k) const
static constexpr uint32_t k_CornerSize
constexpr std::array< uint8_t, layerIndexSize > layer
wafer_map wafersInLayers_
HGCalGeomTools geomTools_
bool waferInLayer(int wafer, int lay, bool reco) const
U second(std::pair< T, U > const &p)
double scintCellSize(const int layer) const
std::vector< double > cellCoarseX_
static constexpr int scintillatorFile
std::map< int, HGCWaferParam > waferLayer_
int32_t tileIndex(int32_t layer, int32_t ring, int32_t phi)
std::vector< std::pair< int, int > > tileRingRange_
int layer() const
get the layer #
static constexpr int32_t WaferFull
std::vector< int > firstModule_
unsigned int waferFileSize() const
int getTypeHex(int layer, int waferU, int waferV) const
static constexpr int32_t WaferHalf
int getType(double xpos, double ypos, double zpos)
bool isHalfCell(int waferType, int cell) const
int maxCells(bool reco) const
std::vector< double > cellSize_
std::vector< int > waferUVMaxLayer_
std::vector< int > layerIndex_
std::vector< double > yLayerHex_
static int32_t cellPlacementIndex(int32_t iz, int32_t fwdBack, int32_t orient)
HGCalDDDConstants(const HGCalParameters *hp, const std::string &name)
int layerIndex(int lay, bool reco) const
std::pair< float, float > localToGlobal8(int lay, int waferU, int waferV, double localX, double localY, bool reco, bool debug) const
std::vector< double > rMaxFront_
Cos< T >::type cos(const T &t)
int waferType(DetId const &id, bool fromFile=false) const
bool isValidTrap(int lay, int ieta, int iphi) const
int getUVMax(int type) const
bool isValidCell8(int lay, int waferU, int waferV, int cellU, int cellV, int type) const
Abs< T >::type abs(const T &t)
std::pair< int, int > simToReco(int cell, int layer, int mod, bool half) const
std::pair< int, float > getIndex(int lay, bool reco) const
bool waferVirtual(int layer, int waferU, int waferV) const
int tileCount(int layer, int ring) const
std::pair< int, int > assignCell(float x, float y, int lay, int subSec, bool reco) const
std::vector< double > slopeTop_
std::vector< int > layerCenter_
std::vector< HGCalParameters::hgtrap > getModules() const
double mouseBite(bool reco) const
unsigned int layers(bool reco) const
static constexpr int32_t WaferCorner0
bool tileTrapezoid() const
std::vector< double > rMinLayHex_
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
int getTypeTrap(int layer) const
int type() const
get the type
double cellSizeHex(int type) const
std::vector< double > zLayerHex_
std::vector< int > layerType_
#define TYPELOOKUP_DATA_REG(_dataclass_)
std::pair< double, double > rangeR(double z, bool reco) const
std::pair< double, double > waferPosition(int wafer, bool reco) const
std::vector< double > rMaxLayHex_
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
std::vector< double > slopeMin_
static constexpr int32_t WaferCenterR
std::vector< int > lastModule_
std::array< int, 4 > waferMax_
static constexpr double k_ScaleToDDD
int numberCellsHexagon(int wafer) const
std::vector< double > radiusMixBoundary_
std::array< int, 3 > assignCellTrap(float x, float y, float z, int lay, bool reco) const
bool cellInLayer(int waferU, int waferV, int cellU, int cellV, int lay, bool reco) const
std::vector< double > cellThickness_
std::vector< int > layerGroup_
constexpr uint16_t localX(uint16_t px)
int numberCells(bool reco) const
std::vector< double > moduleCellS_
std::pair< float, float > locateCellHex(int cell, int wafer, bool reco) const
double cellThickness(int layer, int waferU, int waferV) const
constexpr uint16_t localY(uint16_t py, uint16_t n)
wafer_map cellCoarseIndex_
std::pair< int, int > rowColumnWafer(const int wafer) const
unsigned int getTrFormN() const
HGCalParameters::hgtrform getTrForm(unsigned int k) const
std::vector< double > rMinFront_
std::pair< float, float > locateCell(int cell, int lay, int type, bool reco) const
std::vector< int > iradMinBH_
std::vector< double > cellFineX_
int maxRows(int lay, bool reco) const
const HGCalGeometryMode::GeometryMode mode_
int32_t waferIndex(int wafer, int index) const
std::array< int, 5 > assignCellHex(float x, float y, int lay, bool reco, bool extend=false, bool debug=false) const
static constexpr double k_ScaleFromDDD
std::vector< HGCalParameters::hgtrform > getTrForms() const
std::vector< int > layerGroupO_
static constexpr int k_OffsetRotation
int getLayer(double z, bool reco) const
std::array< int, 3 > HGCWaferParam
int32_t waferV(const int32_t index)
int waferTypeL(int wafer) const
std::vector< int > waferCopy_
static unsigned int const shift
std::vector< int > depthIndex_
static constexpr double tan30deg_
std::pair< double, double > waferPositionNoRot(int lay, int waferU, int waferV, bool reco, bool debug=false) const
std::vector< double > zFrontTop_
std::vector< double > radiusLayer_[2]
std::array< uint32_t, 2 > tot_layers_
static constexpr int32_t WaferFive
std::vector< int > waferTypeT_
int modules(int lay, bool reco) const
static constexpr int32_t WaferCornerMin
int modifyUV(int uv, int type1, int type2) const
std::vector< double > cellCoarseY_
int type() const
get the type
Log< level::Warning, false > LogWarning
waferInfo_map waferInfoMap_
__host__ __device__ V wmin
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
T mod(const T &a, const T &b)
int scintCells(const int layer) const
tileInfo_map tileInfoMap_
int cellHex(double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
std::vector< int > waferTypeL_
std::vector< double > xLayerHex_
std::pair< float, float > locateCellTrap(int lay, int ieta, int iphi, bool reco) const
double distFromEdgeHex(double x, double y, double z) const
int waferFromCopy(int copy) const
__host__ __device__ V V wmax
static bool maskCell(int u, int v, int N, int ncor, int fcor, int corners)