10 double waferSize, int32_t nFine, int32_t nCoarse,
double guardRingOffset_,
double mouseBiteCut_) {
13 hgcalcell_ = std::make_unique<HGCalCell>(waferSize, nFine, nCoarse);
14 for (
int k = 0;
k < 2; ++
k) {
18 for (
int j = 0;
j < 4; ++
j) {
20 for (
int i = 0;
i < 6; ++
i) {
47 cellArea[
k][
j] = totalArea - cutArea1 - cutArea2 - cutArea3;
49 double xMag = ((35.0 *
cellY_[
k] / 132.0) * totalArea - (cutArea1 *
x1) - (cutArea2 *
x2) - (cutArea3 * x3)) /
52 ((5.0 *
cellY_[
k] / (44.0 *
sqrt3_)) * totalArea - (cutArea1 *
y1) - (cutArea2 *
y2) - (cutArea3 * y3)) /
57 std::array<double, 6> tempOffsetX = {{xMag,
63 std::array<double, 6> tempOffsetY = {{yMag,
69 for (
int i = 0;
i < 6; ++
i) {
78 double offMag = (((-2.0 / 15.0) * totalArea *
cellY_[
k]) - ((
cellY_[
k] - (0.5 * guardRingOffset_)) * cutArea)) /
83 std::array<double, 6> tempOffsetX = {
84 {-0.5 * offMag, -offMag, -0.5 * offMag, 0.5 * offMag, offMag, 0.5 * offMag}};
85 std::array<double, 6> tempOffsetY = {
87 for (
int i = 0;
i < 6; ++
i) {
97 (((5.0 / 42.0) * totalArea *
cellY_[
k]) - ((
cellY_[
k] - (0.5 * guardRingOffset_))) * (cutArea)) /
102 std::array<double, 6> tempOffsetX = {
103 {-0.5 * offMag, -offMag, -0.5 * offMag, 0.5 * offMag, offMag, 0.5 * offMag}};
104 std::array<double, 6> tempOffsetY = {
106 for (
int i = 0;
i < 6; ++
i) {
114 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalCellOffset initialized with waferSize " << waferSize <<
" number of cells " 115 << nFine <<
":" << nCoarse <<
" Guardring offset " << guardRingOffset_ <<
" Mousebite " 123 double x_off(0), y_off(0);
125 int cellPos = cell.first;
126 int cellType = cell.second;
145 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalCellOffset in wafer with placement index " << placementIndex <<
" type " 146 <<
type <<
" for cell u " << u <<
" v " <<
v <<
" Offset x:y " << x_off <<
":" << y_off;
148 return std::make_pair(x_off, y_off);
156 int cellType = cell.second;
159 edm::LogVerbatim(
"HGCalGeom") <<
"HGCalCellOffset in wafer with placement index " << placementIndex <<
" type " 160 <<
type <<
" for cell u " << u <<
" v " <<
v <<
" Area " <<
area;
Log< level::Info, true > LogVerbatim
static constexpr int32_t fullCell
std::array< std::array< std::array< double, 6 >, 4 >, 2 > offsetY
std::pair< double, double > cellOffsetUV2XY1(int32_t u, int32_t v, int32_t placementIndex, int32_t type)
double cellAreaUV(int32_t u, int32_t v, int32_t placementIndex, int32_t type, bool reco)
static constexpr int32_t bottomLeftEdge
std::array< std::array< std::array< double, 6 >, 4 >, 2 > offsetX
static constexpr int32_t truncatedCell
static constexpr int32_t extendedCell
std::unique_ptr< HGCalCell > hgcalcell_
HGCalCellOffset(double waferSize, int32_t nFine, int32_t nCoarse, double guardRingOffset_, double mouseBiteCut_)
static constexpr int32_t bottomCorner
static constexpr int32_t cornerCell
static constexpr double k_ScaleToDDD2
Power< A, B >::type pow(const A &a, const B &b)
static constexpr int32_t cellPlacementExtra