5 using namespace cms_units::operators;
9 const std::vector<double>
angle = {90._deg, 30._deg};
10 std::vector<std::pair<double, double> > projXY;
11 projXY.reserve(angle.size());
12 for (
auto ang : angle)
13 projXY.emplace_back(std::make_pair(
cos(ang),
sin(ang)));
14 const double mousebite(hgc.
mouseBite(
true));
15 const double wafersize(hgc.
waferSize(
true));
16 double cut = wafersize *
tan(angle[1]) - mousebite;
18 edm::LogVerbatim(
"HGCalGeom") <<
"Creating HGCMosueBite with cut at " << cut <<
" along " << angle.size()
19 <<
" axes in wafers of size " << wafersize;
20 for (
unsigned int k = 0;
k < angle.size(); ++
k)
22 << projXY[
k].first <<
":" << projXY[
k].second;
24 static const double sqrt3 =
std::sqrt(3.0);
27 double Rf = wafersize / (3.0 * nf);
28 double rf = 0.5 * Rf * sqrt3;
29 for (
int u = 0; u < 2 * nf; ++u) {
30 for (
int v = 0;
v < 2 * nf; ++
v) {
31 if (((
v - u) < nf) && ((u -
v) <= nf)) {
32 double yp =
std::abs((u - 0.5 *
v - nf2) * 2 * rf);
33 double xp =
std::abs((1.5 * (
v - nf) + 1.0) * Rf);
34 for (
auto proj : projXY) {
35 double dist = (rot ? (yp * proj.first + xp * proj.second) : (xp * proj.first + yp * proj.second));
37 rejectFine_.emplace_back(100 * u +
v);
46 <<
" masked u, v's among the fine grain wafers:";
47 for (
unsigned int k = 0; k < rejectFine_.size(); ++
k)
48 edm::LogVerbatim(
"HGCalGeom") <<
"[" << k <<
"] = (" << rejectFine_[
k] / 100 <<
", " << rejectFine_[
k] % 100
54 double rc = 0.5 * Rc * sqrt3;
55 for (
int u = 0; u < 2 * nc; ++u) {
56 for (
int v = 0;
v < 2 * nc; ++
v) {
57 if (((
v - u) < nc) && ((u -
v) <= nc)) {
58 double yp = (u - 0.5 *
v - nc2) * 2 * rc;
59 double xp = (1.5 * (
v - nc) + 1.0) * Rc;
60 for (
auto proj : projXY) {
61 double dist = (rot ? (yp * proj.first + xp * proj.second) : (xp * proj.first + yp * proj.second));
63 rejectCoarse_.emplace_back(100 * u +
v);
71 <<
" masked u, v's among the coarse grain wafers:";
72 for (
unsigned int k = 0; k < rejectCoarse_.size(); ++
k)
73 edm::LogVerbatim(
"HGCalGeom") <<
"[" << k <<
"] = (" << rejectCoarse_[
k] / 100 <<
", " << rejectCoarse_[
k] % 100
Log< level::Info, true > LogVerbatim
const HGCalParameters * getParameter() const
constexpr NumType convertRadToDeg(NumType radians)
Sin< T >::type sin(const T &t)
static const int HGCalFineN
double mouseBite(bool reco) const
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
Abs< T >::type abs(const T &t)
HGCalMouseBite(const HGCalDDDConstants &hgc, bool waferRotate=false)
double waferSize(bool reco) const
static const int HGCalCoarseN
bool waferHexagon8() const
T angle(T x1, T y1, T z1, T x2, T y2, T z2)