CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
HGCalDDDConstants Class Reference

#include <HGCalDDDConstants.h>

Public Member Functions

std::pair< int, int > assignCell (float x, float y, int lay, int subSec, bool reco) const
 
std::array< int, 5 > assignCellHex (float x, float y, int lay, bool reco, bool extend=false, bool debug=false) const
 
std::array< int, 3 > assignCellTrap (float x, float y, float z, int lay, bool reco) const
 
std::pair< double, double > cellEtaPhiTrap (int type, int irad) const
 
bool cellInLayer (int waferU, int waferV, int cellU, int cellV, int lay, bool reco) const
 
double cellSizeHex (int type) const
 
std::pair< double, double > cellSizeTrap (int type, int irad) const
 
double cellThickness (int layer, int waferU, int waferV) const
 
HGCalTypes::CellType cellType (int type, int waferU, int waferV) const
 
double distFromEdgeHex (double x, double y, double z) const
 
double distFromEdgeTrap (double x, double y, double z) const
 
void etaPhiFromPosition (const double x, const double y, const double z, const int layer, int &ieta, int &iphi, int &type, double &wt) const
 
int firstLayer () const
 
HGCalGeometryMode::GeometryMode geomMode () const
 
int getLayer (double z, bool reco) const
 
int getLayerOffset () const
 
HGCalParameters::hgtrap getModule (unsigned int k, bool hexType, bool reco) const
 
std::vector
< HGCalParameters::hgtrap
getModules () const
 
const HGCalParametersgetParameter () const
 
int getPhiBins (int lay) const
 
const std::vector< double > & getRadiusLayer (int layer) const
 
std::pair< int, int > getREtaRange (int lay) const
 
HGCalParameters::hgtrform getTrForm (unsigned int k) const
 
unsigned int getTrFormN () const
 
std::vector
< HGCalParameters::hgtrform
getTrForms () const
 
int getTypeHex (int layer, int waferU, int waferV) const
 
int getTypeTrap (int layer) const
 
int getUVMax (int type) const
 
std::pair< double, double > getXY (int layer, double x, double y, bool forwd) const
 
 HGCalDDDConstants (const HGCalParameters *hp, const std::string &name)
 
bool isHalfCell (int waferType, int cell) const
 
bool isValidHex (int lay, int mod, int cell, bool reco) const
 
bool isValidHex8 (int lay, int waferU, int waferV, bool fullAndPart=false) const
 
bool isValidHex8 (int lay, int modU, int modV, int cellU, int cellV, bool fullAndPart=false) const
 
bool isValidTrap (int lay, int ieta, int iphi) const
 
int lastLayer (bool reco) const
 
int layerIndex (int lay, bool reco) const
 
unsigned int layers (bool reco) const
 
unsigned int layersInit (bool reco) const
 
int levelTop (int ind=0) const
 
std::pair< float, float > localToGlobal8 (int lay, int waferU, int waferV, double localX, double localY, bool reco, bool debug) const
 
std::pair< float, float > locateCell (int cell, int lay, int type, bool reco) const
 
std::pair< float, float > locateCell (int lay, int waferU, int waferV, int cellU, int cellV, bool reco, bool all, bool norot=false, bool debug=false) const
 
std::pair< float, float > locateCell (const HGCSiliconDetId &, bool debug=false) const
 
std::pair< float, float > locateCell (const HGCScintillatorDetId &, bool debug=false) const
 
std::pair< float, float > locateCellHex (int cell, int wafer, bool reco) const
 
std::pair< float, float > locateCellTrap (int lay, int ieta, int iphi, bool reco) const
 
bool maskCell (const DetId &id, int corners) const
 
int maxCells (bool reco) const
 
int maxCells (int lay, bool reco) const
 
int maxCellUV () const
 
int maxModules () const
 
int maxModulesPerLayer () const
 
int maxRows (int lay, bool reco) const
 
double minSlope () const
 
int modifyUV (int uv, int type1, int type2) const
 
int modules (int lay, bool reco) const
 
int modulesInit (int lay, bool reco) const
 
double mouseBite (bool reco) const
 
int numberCells (bool reco) const
 
std::vector< int > numberCells (int lay, bool reco) const
 
int numberCellsHexagon (int wafer) const
 
int numberCellsHexagon (int lay, int waferU, int waferV, bool flag) const
 
std::pair< double, double > rangeR (double z, bool reco) const
 
std::pair< double, double > rangeRLayer (int lay, bool reco) const
 
std::pair< double, double > rangeZ (bool reco) const
 
std::pair< int, int > rowColumnWafer (const int wafer) const
 
int sectors () const
 
std::pair< int, int > simToReco (int cell, int layer, int mod, bool half) const
 
int tileCount (int layer, int ring) const
 
bool tileExist (int zside, int layer, int ring, int phi) const
 
std::pair< int, int > tileRings (int layer) const
 
int tileSiPM (int sipm) const
 
bool tileTrapezoid () const
 
std::pair< int, int > tileType (int layer, int ring, int phi) const
 
unsigned int volumes () const
 
int waferCount (const int type) const
 
int waferFileIndex (unsigned int kk) const
 
std::tuple< int, int, int > waferFileInfo (unsigned int kk) const
 
bool waferFileInfoExist (int kk) const
 
std::tuple< int, int, int > waferFileInfoFromIndex (int kk) const
 
unsigned int waferFileSize () const
 
int waferFromCopy (int copy) const
 
void waferFromPosition (const double x, const double y, int &wafer, int &icell, int &celltyp) const
 
void waferFromPosition (const double x, const double y, const int layer, int &waferU, int &waferV, int &cellU, int &cellV, int &celltype, double &wt, bool extend=false, bool debug=false) const
 
bool waferFullInLayer (int wafer, int lay, bool reco) const
 
bool waferHexagon6 () const
 
bool waferHexagon8 () const
 
bool waferInLayer (int wafer, int lay, bool reco) const
 
GlobalPoint waferLocal2Global (HepGeom::Point3D< float > &loc, const DetId &id, bool useWafer, bool reco, bool debug) const
 
int waferMax () const
 
int waferMin () const
 
std::pair< double, double > waferParameters (bool reco) const
 
std::pair< double, double > waferPosition (int wafer, bool reco) const
 
std::pair< double, double > waferPosition (int lay, int waferU, int waferV, bool reco, bool debug=false) const
 
int wafers () const
 
int wafers (int layer, int type) const
 
double waferSepar (bool reco) const
 
double waferSize (bool reco) const
 
int waferToCopy (int wafer) const
 
int waferType (DetId const &id, bool fromFile=false) const
 
int waferType (int layer, int waferU, int waferV, bool fromFile=false) const
 
std::tuple< int, int, int > waferType (HGCSiliconDetId const &id, bool fromFile=false) const
 
int waferTypeL (int wafer) const
 
std::pair< int, int > waferTypeRotation (int layer, int waferU, int waferV, bool fromFile=false, bool debug=false) const
 
int waferTypeT (int wafer) const
 
int waferUVMax () const
 
bool waferVirtual (int layer, int waferU, int waferV) const
 
double waferZ (int layer, bool reco) const
 
 ~HGCalDDDConstants ()
 

Private Types

typedef std::array< int, 3 > HGCWaferParam
 
typedef std::array
< std::vector< int32_t >, 2 > 
Simrecovecs
 

Private Member Functions

int cellHex (double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
 
void cellHex (double xloc, double yloc, int cellType, int &cellU, int &cellV, bool extend=false, bool debug=false) const
 
std::pair< int, float > getIndex (int lay, bool reco) const
 
bool isValidCell (int layindex, int wafer, int cell) const
 
bool isValidCell8 (int lay, int waferU, int waferV, int cellU, int cellV, int type) const
 
int layerFromIndex (int index, bool reco) const
 
int32_t waferIndex (int wafer, int index) const
 
bool waferInLayerTest (int wafer, int lay, bool full) const
 
std::pair< double, double > waferPosition (int waferU, int waferV, bool reco) const
 
std::pair< double, double > waferPositionNoRot (int lay, int waferU, int waferV, bool reco, bool debug=false) const
 

Private Attributes

const float dPhiMin = 0.02
 
const bool fullAndPart_
 
HGCalGeomTools geomTools_
 
double hexside_
 
double hexsideT_
 
const HGCalParametershgpar_
 
const double k_horizontalShift = 1.0
 
Simrecovecs max_modules_layer_
 
int32_t maxWafersPerLayer_
 
const
HGCalGeometryMode::GeometryMode 
mode_
 
int32_t modHalf_
 
double rmax_
 
double rmaxT_
 
const double sqrt3_
 
std::array< uint32_t, 2 > tot_layers_
 
int32_t tot_wafers_
 
std::unordered_map< int32_t, bool > waferIn_
 
std::map< int, HGCWaferParamwaferLayer_
 
std::array< int, 4 > waferMax_
 

Static Private Attributes

static constexpr double tan30deg_ = 0.5773502693
 

Detailed Description

this class reads the constant section of the numbering xml-files of the high granulairy calorimeter

Date:
2014/03/20 00:06:50
Author
Sunanda Banerjee, SINP sunan.nosp@m.da.b.nosp@m.anerj.nosp@m.ee@c.nosp@m.ern.c.nosp@m.h

Definition at line 29 of file HGCalDDDConstants.h.

Member Typedef Documentation

typedef std::array<int, 3> HGCalDDDConstants::HGCWaferParam
private

Definition at line 273 of file HGCalDDDConstants.h.

typedef std::array<std::vector<int32_t>, 2> HGCalDDDConstants::Simrecovecs
private

Definition at line 272 of file HGCalDDDConstants.h.

Constructor & Destructor Documentation

HGCalDDDConstants::HGCalDDDConstants ( const HGCalParameters hp,
const std::string &  name 
)

Definition at line 27 of file HGCalDDDConstants.cc.

References isotrackTrainRegressor::a1, HGCalParameters::cellSize_, funct::cos(), fullAndPart_, getIndex(), getTrForm(), getTrFormN(), hexside_, hexsideT_, hgpar_, mps_fire::i, HGCalParameters::k_ScaleFromDDD, HGCalParameters::hgtrform::lay, phase1PixelTopology::layer, layers(), layersInit(), SiStripPI::max, max_modules_layer_, maxCells(), maxWafersPerLayer_, mode_, modHalf_, modulesInit(), rmax_, rmaxT_, sectors(), HGCalParameters::sensorSeparation_, tan30deg_, tot_layers_, tot_wafers_, HGCalParameters::waferCopy_, waferHexagon6(), waferHexagon8(), waferIn_, HGCalWaferIndex::waferIndex(), waferInLayer(), waferLayer_, waferMax_, HGCalParameters::waferR_, wafers(), HGCalWaferIndex::waferU(), HGCalWaferIndex::waferV(), cms::cuda::wmax, and cms::cuda::wmin.

28  : hgpar_(hp),
29  sqrt3_(std::sqrt(3.0)),
30  mode_(hgpar_->mode_),
32 #ifdef EDM_ML_DEBUG
33  edm::LogVerbatim("HGCalGeom") << "Mode " << mode_ << " FullAndPart " << fullAndPart_;
34 #endif
35  if (waferHexagon6() || waferHexagon8()) {
38  hexside_ = 2.0 * rmax_ * tan30deg_;
39  hexsideT_ = 2.0 * rmaxT_ * tan30deg_;
40 #ifdef EDM_ML_DEBUG
41  edm::LogVerbatim("HGCalGeom") << "rmax_ " << rmax_ << ":" << rmaxT_ << ":" << hexside_ << ":" << hexsideT_
42  << " CellSize " << 0.5 * HGCalParameters::k_ScaleFromDDD * hgpar_->cellSize_[0] << ":"
44 #endif
45  }
46  // init maps and constants
47  modHalf_ = 0;
49  for (int simreco = 0; simreco < 2; ++simreco) {
50  tot_layers_[simreco] = layersInit((bool)simreco);
51  max_modules_layer_[simreco].resize(tot_layers_[simreco] + 1);
52  for (unsigned int layer = 1; layer <= tot_layers_[simreco]; ++layer) {
53  max_modules_layer_[simreco][layer] = modulesInit(layer, (bool)simreco);
54  if (simreco == 1) {
55  modHalf_ += max_modules_layer_[simreco][layer];
57 #ifdef EDM_ML_DEBUG
58  edm::LogVerbatim("HGCalGeom") << "Layer " << layer << " with " << max_modules_layer_[simreco][layer] << ":"
59  << modHalf_ << " modules in RECO";
60  } else {
61  edm::LogVerbatim("HGCalGeom") << "Layer " << layer << " with " << max_modules_layer_[simreco][layer]
62  << " modules in SIM";
63 #endif
64  }
65  }
66 #ifdef EDM_ML_DEBUG
67  edm::LogVerbatim("HGCalGeom") << "SimReco " << simreco << " with " << tot_layers_[simreco] << " Layers";
68 #endif
69  }
70  tot_wafers_ = wafers();
71 
72 #ifdef EDM_ML_DEBUG
73  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants initialized for " << name << " with " << layers(false) << ":"
74  << layers(true) << " layers, " << wafers() << ":" << 2 * modHalf_
75  << " wafers with maximum " << maxWafersPerLayer_ << " per layer and "
76  << "maximum of " << maxCells(false) << ":" << maxCells(true) << " cells";
77 #endif
78  if (waferHexagon6() || waferHexagon8()) {
79  int wminT(9999999), wmaxT(-9999999), kount1(0), kount2(0);
80  for (unsigned int i = 0; i < getTrFormN(); ++i) {
81  int lay0 = getTrForm(i).lay;
82  int wmin(9999999), wmax(-9999999), kount(0);
83  for (int wafer = 0; wafer < sectors(); ++wafer) {
84  bool waferIn = waferInLayer(wafer, lay0, true);
85  if (waferHexagon8()) {
86  int kndx = HGCalWaferIndex::waferIndex(lay0,
89  waferIn_[kndx] = waferIn;
90  }
91  if (waferIn) {
92  int waferU = ((waferHexagon6()) ? wafer : HGCalWaferIndex::waferU(hgpar_->waferCopy_[wafer]));
93  if (waferU < wmin)
94  wmin = waferU;
95  if (waferU > wmax)
96  wmax = waferU;
97  ++kount;
98  }
99  }
100  if (wminT > wmin)
101  wminT = wmin;
102  if (wmaxT < wmax)
103  wmaxT = wmax;
104  if (kount1 < kount)
105  kount1 = kount;
106  kount2 += kount;
107 #ifdef EDM_ML_DEBUG
108  int lay1 = getIndex(lay0, true).first;
109  edm::LogVerbatim("HGCalGeom") << "Index " << i << " Layer " << lay0 << ":" << lay1 << " Wafer " << wmin << ":"
110  << wmax << ":" << kount;
111 #endif
112  HGCWaferParam a1{{wmin, wmax, kount}};
113  waferLayer_[lay0] = a1;
114  }
115  waferMax_ = std::array<int, 4>{{wminT, wmaxT, kount1, kount2}};
116 #ifdef EDM_ML_DEBUG
117  edm::LogVerbatim("HGCalGeom") << "Overall wafer statistics: " << wminT << ":" << wmaxT << ":" << kount1 << ":"
118  << kount2;
119 #endif
120  }
121 }
Log< level::Info, true > LogVerbatim
bool waferHexagon6() const
HGCalParameters::hgtrform getTrForm(unsigned int k) const
Simrecovecs max_modules_layer_
unsigned int layersInit(bool reco) const
int32_t waferU(const int32_t index)
std::unordered_map< int32_t, bool > waferIn_
int modulesInit(int lay, bool reco) const
HGCalGeometryMode::GeometryMode mode_
constexpr std::array< uint8_t, layerIndexSize > layer
std::map< int, HGCWaferParam > waferLayer_
unsigned int getTrFormN() const
unsigned int layers(bool reco) const
std::vector< double > cellSize_
T sqrt(T t)
Definition: SSEVec.h:19
std::pair< int, float > getIndex(int lay, bool reco) const
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
std::array< int, 4 > waferMax_
const HGCalGeometryMode::GeometryMode mode_
static constexpr double k_ScaleFromDDD
std::array< int, 3 > HGCWaferParam
int32_t waferV(const int32_t index)
std::vector< int > waferCopy_
bool waferHexagon8() const
static constexpr double tan30deg_
std::array< uint32_t, 2 > tot_layers_
__host__ __device__ V wmin
const HGCalParameters * hgpar_
int maxCells(bool reco) const
bool waferInLayer(int wafer, int lay, bool reco) const
__host__ __device__ V V wmax
HGCalDDDConstants::~HGCalDDDConstants ( )

Definition at line 123 of file HGCalDDDConstants.cc.

123 {}

Member Function Documentation

std::pair< int, int > HGCalDDDConstants::assignCell ( float  x,
float  y,
int  lay,
int  subSec,
bool  reco 
) const

Definition at line 125 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, cellHex(), HGCalParameters::cellSize_, getIndex(), hgpar_, HGCalParameters::k_ScaleFromDDD, dt_dqm_sourceclient_common_cff::reco, rmax_, findQualityFiles::size, waferHexagon6(), HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, and HGCalParameters::waferTypeT_.

Referenced by HGCNumberingScheme::assignCell(), and HGCalGeometry::getClosestCell().

125  {
126  const auto& index = getIndex(lay, reco);
127  if (index.first < 0)
128  return std::make_pair(-1, -1);
129  if (waferHexagon6()) {
130  float xx = (reco) ? x : HGCalParameters::k_ScaleFromDDD * x;
131  float yy = (reco) ? y : HGCalParameters::k_ScaleFromDDD * y;
132 
133  // First the wafer
134  int wafer = cellHex(xx, yy, rmax_, hgpar_->waferPosX_, hgpar_->waferPosY_);
135  if (wafer < 0 || wafer >= (int)(hgpar_->waferTypeT_.size())) {
136  edm::LogWarning("HGCalGeom") << "Wafer no. out of bound for " << wafer << ":" << (hgpar_->waferTypeT_).size()
137  << ":" << (hgpar_->waferPosX_).size() << ":" << (hgpar_->waferPosY_).size()
138  << " ***** ERROR *****";
139  return std::make_pair(-1, -1);
140  } else {
141  // Now the cell
142  xx -= hgpar_->waferPosX_[wafer];
143  yy -= hgpar_->waferPosY_[wafer];
144  if (hgpar_->waferTypeT_[wafer] == 1)
145  return std::make_pair(wafer,
146  cellHex(xx,
147  yy,
150  hgpar_->cellFineY_));
151  else
152  return std::make_pair(wafer,
153  cellHex(xx,
154  yy,
157  hgpar_->cellCoarseY_));
158  }
159  } else {
160  return std::make_pair(-1, -1);
161  }
162 }
std::vector< double > waferPosY_
bool waferHexagon6() const
std::vector< double > cellFineY_
int cellHex(double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
std::vector< double > cellCoarseX_
std::vector< double > cellSize_
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< double > cellFineX_
static constexpr double k_ScaleFromDDD
std::vector< int > waferTypeT_
std::vector< double > cellCoarseY_
Log< level::Warning, false > LogWarning
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
tuple size
Write out results.
std::array< int, 5 > HGCalDDDConstants::assignCellHex ( float  x,
float  y,
int  lay,
bool  reco,
bool  extend = false,
bool  debug = false 
) const

Definition at line 164 of file HGCalDDDConstants.cc.

References HGCalParameters::k_ScaleToDDD, dt_dqm_sourceclient_common_cff::reco, waferFromPosition(), waferHexagon8(), waferType(), HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

Referenced by HGCalGeometry::getClosestCell(), and HGCalGeometry::getClosestCellHex().

165  {
166  int waferU(0), waferV(0), waferType(-1), cellU(0), cellV(0);
167  if (waferHexagon8()) {
168  double xx = (reco) ? HGCalParameters::k_ScaleToDDD * x : x;
169  double yy = (reco) ? HGCalParameters::k_ScaleToDDD * y : y;
170  double wt(1.0);
171 #ifdef EDM_ML_DEBUG
172  edm::LogVerbatim("HGCalGeom") << "assignCellHex x " << x << ":" << xx << " y " << y << ":" << yy << " Lay " << lay;
173 #endif
174  waferFromPosition(xx, yy, lay, waferU, waferV, cellU, cellV, waferType, wt, extend, debug);
175  }
176  return std::array<int, 5>{{waferU, waferV, waferType, cellU, cellV}};
177 }
Log< level::Info, true > LogVerbatim
void waferFromPosition(const double x, const double y, int &wafer, int &icell, int &celltyp) const
int32_t waferU(const int32_t index)
static constexpr double k_ScaleToDDD
#define debug
Definition: HDRShower.cc:19
int32_t waferV(const int32_t index)
bool waferHexagon8() const
int waferType(DetId const &id, bool fromFile=false) const
std::array< int, 3 > HGCalDDDConstants::assignCellTrap ( float  x,
float  y,
float  z,
int  lay,
bool  reco 
) const

Definition at line 179 of file HGCalDDDConstants.cc.

References getIndex(), hgpar_, HGCalParameters::iradMaxBH_, HGCalParameters::iradMinBH_, HGCalParameters::k_ScaleFromDDD, cuda_std::lower_bound(), M_PI, phi, alignCSCRings::r, HGCalParameters::radiusLayer_, HGCalParameters::scintType(), and mathSSE::sqrt().

Referenced by HGCalGeometry::getClosestCell(), and HGCalNumberingScheme::getUnitID().

179  {
180  int irad(-1), iphi(-1), type(-1);
181  const auto& indx = getIndex(layer, reco);
182  if (indx.first < 0)
183  return std::array<int, 3>{{irad, iphi, type}};
184  double xx = (z > 0) ? x : -x;
185  double r = (reco ? std::sqrt(x * x + y * y) : HGCalParameters::k_ScaleFromDDD * std::sqrt(x * x + y * y));
186  double phi = (r == 0. ? 0. : std::atan2(y, xx));
187  if (phi < 0)
188  phi += (2.0 * M_PI);
190  auto ir = std::lower_bound(hgpar_->radiusLayer_[type].begin(), hgpar_->radiusLayer_[type].end(), r);
191  irad = (int)(ir - hgpar_->radiusLayer_[type].begin());
192  irad = std::clamp(irad, hgpar_->iradMinBH_[indx.first], hgpar_->iradMaxBH_[indx.first]);
193  iphi = 1 + (int)(phi / indx.second);
194 #ifdef EDM_ML_DEBUG
195  edm::LogVerbatim("HGCalGeom") << "assignCellTrap Input " << x << ":" << y << ":" << z << ":" << layer << ":" << reco
196  << " x|r " << xx << ":" << r << " phi " << phi << " o/p " << irad << ":" << iphi << ":"
197  << type;
198 #endif
199  return std::array<int, 3>{{irad, iphi, type}};
200 }
std::vector< int > iradMaxBH_
Log< level::Info, true > LogVerbatim
int scintType(const int layer) const
constexpr std::array< uint8_t, layerIndexSize > layer
T sqrt(T t)
Definition: SSEVec.h:19
std::pair< int, float > getIndex(int lay, bool reco) const
#define M_PI
std::vector< int > iradMinBH_
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
std::pair< double, double > HGCalDDDConstants::cellEtaPhiTrap ( int  type,
int  irad 
) const

Definition at line 202 of file HGCalDDDConstants.cc.

References HGCalParameters::cellSize_, isotrackApplyRegressor::df, runTauDisplay::dr, hgpar_, alignCSCRings::r, HGCalParameters::radiusLayer_, and tileTrapezoid().

202  {
203  double dr(0), df(0);
204  if (tileTrapezoid()) {
205  double r = 0.5 * ((hgpar_->radiusLayer_[type][irad - 1] + hgpar_->radiusLayer_[type][irad]));
206  dr = (hgpar_->radiusLayer_[type][irad] - hgpar_->radiusLayer_[type][irad - 1]);
207  df = r * hgpar_->cellSize_[type];
208  }
209  return std::make_pair(dr, df);
210 }
std::vector< double > cellSize_
bool tileTrapezoid() const
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
int HGCalDDDConstants::cellHex ( double  xx,
double  yy,
const double &  cellR,
const std::vector< double > &  posX,
const std::vector< double > &  posY 
) const
private

Definition at line 1532 of file HGCalDDDConstants.cc.

References funct::abs(), PVValHelper::dx, PVValHelper::dy, isotrackApplyRegressor::k, pileupDistInMC::num, tan30deg_, and hlt_dqm_clientPB-live_cfg::xmax.

Referenced by assignCell(), and waferFromPosition().

1533  {
1534  int num(0);
1535  const double tol(0.00001);
1536  double cellY = 2.0 * cellR * tan30deg_;
1537  for (unsigned int k = 0; k < posX.size(); ++k) {
1538  double dx = std::abs(xx - posX[k]);
1539  double dy = std::abs(yy - posY[k]);
1540  if (dx <= (cellR + tol) && dy <= (cellY + tol)) {
1541  double xmax = (dy <= 0.5 * cellY) ? cellR : (cellR - (dy - 0.5 * cellY) / tan30deg_);
1542  if (dx <= (xmax + tol)) {
1543  num = k;
1544  break;
1545  }
1546  }
1547  }
1548  return num;
1549 }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr double tan30deg_
void HGCalDDDConstants::cellHex ( double  xloc,
double  yloc,
int  cellType,
int &  cellU,
int &  cellV,
bool  extend = false,
bool  debug = false 
) const
private

Definition at line 1551 of file HGCalDDDConstants.cc.

References funct::abs(), newFWLiteAna::found, hgpar_, SiStripPI::max, SiStripPI::min, N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, rmax_, rmaxT_, edm::shift, and sqrt3_.

1552  {
1553  int N = (cellType == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
1554  double Rc = 2 * rmax_ / (3 * N);
1555  double rc = 0.5 * Rc * sqrt3_;
1556  double RcT = (extend) ? (2 * rmaxT_ / (3 * N)) : Rc;
1557  double rcT = 0.5 * RcT * sqrt3_;
1558  double v0 = ((xloc / Rc - 1.0) / 1.5);
1559  int cv0 = (v0 > 0) ? (N + (int)(v0 + 0.5)) : (N - (int)(-v0 + 0.5));
1560  double u0 = (0.5 * yloc / rc + 0.5 * cv0);
1561  int cu0 = (u0 > 0) ? (N / 2 + (int)(u0 + 0.5)) : (N / 2 - (int)(-u0 + 0.5));
1562  cu0 = std::max(0, std::min(cu0, 2 * N - 1));
1563  cv0 = std::max(0, std::min(cv0, 2 * N - 1));
1564  if (cv0 - cu0 >= N)
1565  cv0 = cu0 + N - 1;
1566 #ifdef EDM_ML_DEBUG
1567  if (debug)
1568  edm::LogVerbatim("HGCalGeom") << "cellHex: input " << xloc << ":" << yloc << ":" << cellType << " parameter " << rc
1569  << ":" << Rc << " u0 " << u0 << ":" << cu0 << " v0 " << v0 << ":" << cv0;
1570 #endif
1571  bool found(false);
1572  static constexpr int shift[3] = {0, 1, -1};
1573  for (int i1 = 0; i1 < 3; ++i1) {
1574  cellU = cu0 + shift[i1];
1575  for (int i2 = 0; i2 < 3; ++i2) {
1576  cellV = cv0 + shift[i2];
1577  if (((cellV - cellU) < N) && ((cellU - cellV) <= N) && (cellU >= 0) && (cellV >= 0) && (cellU < 2 * N) &&
1578  (cellV < 2 * N)) {
1579  double xc = (1.5 * (cellV - N) + 1.0) * Rc;
1580  double yc = (2 * cellU - cellV - N) * rc;
1581  if ((std::abs(yloc - yc) <= rcT) && (std::abs(xloc - xc) <= RcT) &&
1582  ((std::abs(xloc - xc) <= 0.5 * RcT) || (std::abs(yloc - yc) <= sqrt3_ * (RcT - std::abs(xloc - xc))))) {
1583 #ifdef EDM_ML_DEBUG
1584  if (debug)
1585  edm::LogVerbatim("HGCalGeom")
1586  << "cellHex: local " << xc << ":" << yc << " difference " << std::abs(xloc - xc) << ":"
1587  << std::abs(yloc - yc) << ":" << sqrt3_ * (Rc - std::abs(yloc - yc)) << " comparator " << rc << ":"
1588  << Rc << " (u,v) = (" << cellU << "," << cellV << ")";
1589 #endif
1590  found = true;
1591  break;
1592  }
1593  }
1594  }
1595  if (found)
1596  break;
1597  }
1598  if (!found) {
1599  cellU = cu0;
1600  cellV = cv0;
1601  }
1602 }
Log< level::Info, true > LogVerbatim
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HGCalTypes::CellType cellType(int type, int waferU, int waferV) const
#define debug
Definition: HDRShower.cc:19
#define N
Definition: blowfish.cc:9
static unsigned int const shift
const HGCalParameters * hgpar_
bool HGCalDDDConstants::cellInLayer ( int  waferU,
int  waferV,
int  cellU,
int  cellV,
int  lay,
bool  reco 
) const

Definition at line 212 of file HGCalDDDConstants.cc.

References getIndex(), hgpar_, locateCell(), HGCalParameters::rMinLayHex_, mathSSE::sqrt(), waferHexagon6(), waferHexagon8(), and xy().

Referenced by HGCalGeometry::newCell().

212  {
213  const auto& indx = getIndex(lay, true);
214  if (indx.first >= 0) {
215  if (waferHexagon8() || waferHexagon6()) {
216  const auto& xy = ((waferHexagon8()) ? locateCell(lay, waferU, waferV, cellU, cellV, reco, true, false, false)
217  : locateCell(cellU, lay, waferU, reco));
218  double rpos = sqrt(xy.first * xy.first + xy.second * xy.second);
219  return ((rpos >= hgpar_->rMinLayHex_[indx.first]) && (rpos <= hgpar_->rMaxLayHex_[indx.first]));
220  } else {
221  return true;
222  }
223  } else {
224  return false;
225  }
226 }
bool waferHexagon6() const
int32_t waferU(const int32_t index)
std::pair< float, float > locateCell(int cell, int lay, int type, bool reco) const
T sqrt(T t)
Definition: SSEVec.h:19
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< double > rMinLayHex_
Basic2DVector< T > xy() const
int32_t waferV(const int32_t index)
bool waferHexagon8() const
const HGCalParameters * hgpar_
double HGCalDDDConstants::cellSizeHex ( int  type) const

Definition at line 241 of file HGCalDDDConstants.cc.

References HGCalParameters::cellSize_, hgpar_, HGCalParameters::k_ScaleFromDDD, tileTrapezoid(), and waferHexagon8().

Referenced by HGCalGeometryLoader::build(), and hgcal::RecHitTools::getRadiusToSide().

241  {
242  int indx = ((waferHexagon8()) ? ((type >= 1) ? 1 : 0) : ((type == 1) ? 1 : 0));
243  double cell = (tileTrapezoid() ? 0.5 * hgpar_->cellSize_[indx]
245  return cell;
246 }
std::vector< double > cellSize_
bool tileTrapezoid() const
static constexpr double k_ScaleFromDDD
bool waferHexagon8() const
const HGCalParameters * hgpar_
std::pair<double, double> HGCalDDDConstants::cellSizeTrap ( int  type,
int  irad 
) const
inline

Definition at line 40 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::radiusLayer_.

Referenced by HGCalGeometry::get8Corners(), HGCalGeometry::getCorners(), and HGCalGeometry::getNewCorners().

40  {
41  return std::make_pair(hgpar_->radiusLayer_[type][irad - 1], hgpar_->radiusLayer_[type][irad]);
42  }
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
double HGCalDDDConstants::cellThickness ( int  layer,
int  waferU,
int  waferV 
) const

Definition at line 228 of file HGCalDDDConstants.cc.

References HGCalParameters::cellThickness_, hgpar_, waferHexagon6(), waferHexagon8(), and waferType().

Referenced by HGCalTBAnalyzer::analyzeSimHits(), and hgcal::RecHitTools::getSiThickness().

228  {
229  double thick(-1);
230  int type = waferType(layer, waferU, waferV, false);
231  if (type >= 0) {
232  if (waferHexagon8()) {
233  thick = 10000.0 * hgpar_->cellThickness_[type]; // cm to micron
234  } else if (waferHexagon6()) {
235  thick = 100.0 * (type + 1); // type = 1,2,3 for 100,200,300 micron
236  }
237  }
238  return thick;
239 }
bool waferHexagon6() const
int32_t waferU(const int32_t index)
constexpr std::array< uint8_t, layerIndexSize > layer
std::vector< double > cellThickness_
int32_t waferV(const int32_t index)
bool waferHexagon8() const
const HGCalParameters * hgpar_
int waferType(DetId const &id, bool fromFile=false) const
HGCalTypes::CellType HGCalDDDConstants::cellType ( int  type,
int  waferU,
int  waferV 
) const

Definition at line 248 of file HGCalDDDConstants.cc.

References HGCalTypes::BottomCorner, HGCalTypes::BottomLeftCorner, HGCalTypes::BottomLeftEdge, HGCalTypes::BottomRightCorner, HGCalTypes::BottomRightEdge, HGCalTypes::CentralType, hgpar_, if(), HGCalTypes::LeftEdge, N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, HGCalTypes::RightEdge, HGCalTypes::TopCorner, HGCalTypes::TopLeftCorner, HGCalTypes::TopLeftEdge, HGCalTypes::TopRightCorner, HGCalTypes::TopRightEdge, and HGCalTypes::UndefinedType.

Referenced by HGCalTopology::neighbors().

248  {
249  // type=0: in the middle; 1..6: the edges clocwise from bottom left;
250  // =11..16: the corners clockwise from bottom
251  int N = (type == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
252  if (cellU == 0) {
253  if (cellV == 0)
255  else if (cellV - cellU == N - 1)
257  else
259  } else if (cellV == 0) {
260  if (cellU - cellV == N)
262  else
264  } else if (cellU - cellV == N) {
265  if (cellU == 2 * N - 1)
267  else
269  } else if (cellU == 2 * N - 1) {
270  if (cellV == 2 * N - 1)
272  else
274  } else if (cellV == 2 * N - 1) {
275  if (cellV - cellU == N - 1)
277  else
279  } else if (cellV - cellU == N - 1) {
281  } else if ((cellU > 2 * N - 1) || (cellV > 2 * N - 1) || (cellV >= (cellU + N)) || (cellU > (cellV + N))) {
283  } else {
285  }
286 }
if(conf_.getParameter< bool >("UseStripCablingDB"))
#define N
Definition: blowfish.cc:9
const HGCalParameters * hgpar_
double HGCalDDDConstants::distFromEdgeHex ( double  x,
double  y,
double  z 
) const

Definition at line 288 of file HGCalDDDConstants.cc.

References funct::abs(), PVValHelper::dx, PVValHelper::dy, getLayer(), hexside_, hgpar_, isotrackApplyRegressor::k, HGCalParameters::k_ScaleFromDDD, HGCalParameters::k_ScaleToDDD, layerIndex(), rmax_, sqrt3_, tan30deg_, waferHexagon8(), HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, x, HGCalParameters::xLayerHex_, y, and HGCalParameters::yLayerHex_.

Referenced by HFNoseSD::isItinFidVolume(), and HGCalSD::isItinFidVolume().

288  {
289  // Assming the point is within a hexagonal plane of the wafer, calculate
290  // the shortest distance from the edge
291  if (z < 0)
292  x = -x;
293  double dist(0);
294  // Input x, y in Geant4 unit and transformed to CMSSW standard
295  double xx = HGCalParameters::k_ScaleFromDDD * x;
296  double yy = HGCalParameters::k_ScaleFromDDD * y;
297  if (waferHexagon8()) {
298  int ll = layerIndex(getLayer(z, false), false);
299  xx -= hgpar_->xLayerHex_[ll];
300  yy -= hgpar_->yLayerHex_[ll];
301  }
302  int sizew = (int)(hgpar_->waferPosX_.size());
303  int wafer = sizew;
304  // Transform to the local coordinate frame of the wafer first
305  for (int k = 0; k < sizew; ++k) {
306  double dx = std::abs(xx - hgpar_->waferPosX_[k]);
307  double dy = std::abs(yy - hgpar_->waferPosY_[k]);
308  if ((dx <= rmax_) && (dy <= hexside_) && ((dy <= 0.5 * hexside_) || (dx * tan30deg_ <= (hexside_ - dy)))) {
309  wafer = k;
310  xx -= hgpar_->waferPosX_[k];
311  yy -= hgpar_->waferPosY_[k];
312  break;
313  }
314  }
315  // Look at only one quarter (both x,y are positive)
316  if (wafer < sizew) {
317  if (std::abs(yy) < 0.5 * hexside_) {
318  dist = rmax_ - std::abs(xx);
319  } else {
320  dist = 0.5 * ((rmax_ - std::abs(xx)) - sqrt3_ * (std::abs(yy) - 0.5 * hexside_));
321  }
322  } else {
323  dist = 0;
324  }
326 #ifdef EDM_ML_DEBUG
327  edm::LogVerbatim("HGCalGeom") << "DistFromEdgeHex: Local " << xx << ":" << yy << " wafer " << wafer << " flag "
328  << (wafer < sizew) << " Distance " << rmax_ << ":" << (rmax_ - std::abs(xx)) << ":"
329  << (std::abs(yy) - 0.5 * hexside_) << ":" << 0.5 * hexside_ << ":" << dist;
330 #endif
331  return dist;
332 }
std::vector< double > waferPosY_
Log< level::Info, true > LogVerbatim
int getLayer(double z, bool reco) const
int layerIndex(int lay, bool reco) const
std::vector< double > yLayerHex_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr double k_ScaleToDDD
static constexpr double k_ScaleFromDDD
bool waferHexagon8() const
static constexpr double tan30deg_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::vector< double > xLayerHex_
double HGCalDDDConstants::distFromEdgeTrap ( double  x,
double  y,
double  z 
) const

Definition at line 334 of file HGCalDDDConstants.cc.

References funct::abs(), getLayer(), hgpar_, HGCalParameters::iradMaxBH_, HGCalParameters::iradMinBH_, HGCalParameters::k_ScaleFromDDD, HGCalParameters::k_ScaleToDDD, layerIndex(), cuda_std::lower_bound(), M_PI, SiStripPI::max, SiStripPI::min, phi, alignCSCRings::r, HGCalParameters::radiusLayer_, HGCalParameters::scintCellSize(), HGCalParameters::scintType(), and mathSSE::sqrt().

Referenced by HGCScintSD::isItinFidVolume().

334  {
335  // Assming the point is within the eta-phi plane of the scintillator tile,
336  // calculate the shortest distance from the edge
337  int lay = getLayer(z, false);
338  double xx = (z < 0) ? -x : x;
339  int indx = layerIndex(lay, false);
340  double r = HGCalParameters::k_ScaleFromDDD * std::sqrt(x * x + y * y);
341  double phi = (r == 0. ? 0. : std::atan2(y, xx));
342  if (phi < 0)
343  phi += (2.0 * M_PI);
344  int type = hgpar_->scintType(lay);
345  double cell = hgpar_->scintCellSize(lay);
346  // Compare with the center of the tile find distances along R and also phi
347  // Take the smaller value
348  auto ir = std::lower_bound(hgpar_->radiusLayer_[type].begin(), hgpar_->radiusLayer_[type].end(), r);
349  int irad = (int)(ir - hgpar_->radiusLayer_[type].begin());
350  irad = std::clamp(irad, hgpar_->iradMinBH_[indx], hgpar_->iradMaxBH_[indx]);
351  int iphi = 1 + (int)(phi / cell);
352  double dphi = std::max(0.0, (0.5 * cell - std::abs(phi - (iphi - 0.5) * cell)));
353  double dist = std::min((r - hgpar_->radiusLayer_[type][irad - 1]), (hgpar_->radiusLayer_[type][irad] - r));
354 #ifdef EDM_ML_DEBUG
355  edm::LogVerbatim("HGCalGeom") << "DistFromEdgeTrap: Global " << x << ":" << y << ":" << z << " Layer " << lay
356  << " Index " << indx << ":" << type << " xx " << xx << " R " << r << ":" << irad << ":"
357  << hgpar_->radiusLayer_[type][irad - 1] << ":" << hgpar_->radiusLayer_[type][irad]
358  << " Phi " << phi << ":" << iphi << ":" << (iphi - 0.5) * cell << " cell " << cell
359  << " Dphi " << dphi << " Dist " << dist << ":" << r * dphi;
360 #endif
361  return HGCalParameters::k_ScaleToDDD * std::min(r * dphi, dist);
362 }
std::vector< int > iradMaxBH_
Log< level::Info, true > LogVerbatim
int getLayer(double z, bool reco) const
int scintType(const int layer) const
double scintCellSize(const int layer) const
int layerIndex(int lay, bool reco) const
T sqrt(T t)
Definition: SSEVec.h:19
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define M_PI
static constexpr double k_ScaleToDDD
std::vector< int > iradMinBH_
static constexpr double k_ScaleFromDDD
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
void HGCalDDDConstants::etaPhiFromPosition ( const double  x,
const double  y,
const double  z,
const int  layer,
int &  ieta,
int &  iphi,
int &  type,
double &  wt 
) const
int HGCalDDDConstants::firstLayer ( ) const
inline
HGCalGeometryMode::GeometryMode HGCalDDDConstants::geomMode ( ) const
inline

Definition at line 56 of file HGCalDDDConstants.h.

References mode_.

Referenced by HGCNumberingScheme::getUnitID(), HGCalTopology::HGCalTopology(), HGCScintSD::update(), HFNoseSD::update(), HGCalSD::update(), and HGCSD::update().

56 { return mode_; }
const HGCalGeometryMode::GeometryMode mode_
std::pair< int, float > HGCalDDDConstants::getIndex ( int  lay,
bool  reco 
) const
private

Definition at line 1604 of file HGCalDDDConstants.cc.

References hgpar_, layerIndex(), HGCalParameters::moduleCellR_, HGCalParameters::moduleCellS_, HGCalParameters::scintCellSize(), waferHexagon6(), and waferHexagon8().

Referenced by assignCell(), assignCellTrap(), cellInLayer(), HGCalDDDConstants(), isValidTrap(), locateCell(), locateCellTrap(), maxCells(), maxRows(), modules(), modulesInit(), numberCells(), rangeRLayer(), simToReco(), waferFullInLayer(), waferInLayer(), wafers(), and waferZ().

1604  {
1605  int indx = layerIndex(lay, reco);
1606  if (indx < 0)
1607  return std::make_pair(-1, 0);
1608  float cell(0);
1609  if (waferHexagon6()) {
1610  cell = (reco ? hgpar_->moduleCellR_[0] : hgpar_->moduleCellS_[0]);
1611  } else {
1612  if (waferHexagon8()) {
1613  cell = (reco ? hgpar_->moduleCellR_[0] : hgpar_->moduleCellS_[0]);
1614  } else {
1615  cell = hgpar_->scintCellSize(lay);
1616  }
1617  }
1618  return std::make_pair(indx, cell);
1619 }
std::vector< double > moduleCellR_
bool waferHexagon6() const
double scintCellSize(const int layer) const
int layerIndex(int lay, bool reco) const
std::vector< double > moduleCellS_
bool waferHexagon8() const
const HGCalParameters * hgpar_
int HGCalDDDConstants::getLayer ( double  z,
bool  reco 
) const

Definition at line 364 of file HGCalDDDConstants.cc.

References funct::abs(), HGCalParameters::firstLayer_, hgpar_, isotrackApplyRegressor::k, HGCalParameters::k_ScaleFromDDD, HGCalParameters::layerGroupO_, layerIndex(), dt_dqm_sourceclient_common_cff::reco, waferHexagon6(), and HGCalParameters::zLayerHex_.

Referenced by distFromEdgeHex(), distFromEdgeTrap(), HGCMouseBite::exclude(), HGCalGeometry::getClosestCell(), and HGCalGeometry::getClosestCellHex().

364  {
365  // Get the layer # from the gloabl z coordinate
366  unsigned int k = 0;
367  double zz = (reco ? std::abs(z) : HGCalParameters::k_ScaleFromDDD * std::abs(z));
368  const auto& zLayerHex = hgpar_->zLayerHex_;
369  auto itr = std::find_if(zLayerHex.begin() + 1, zLayerHex.end(), [&k, &zz, &zLayerHex](double zLayer) {
370  ++k;
371  return zz < 0.5 * (zLayerHex[k - 1] + zLayerHex[k]);
372  });
373  int lay = (itr == zLayerHex.end()) ? static_cast<int>(zLayerHex.size()) : k;
374  if (waferHexagon6() && reco) {
375  int indx = layerIndex(lay, false);
376  if (indx >= 0)
377  lay = hgpar_->layerGroupO_[indx];
378  } else {
379  lay += (hgpar_->firstLayer_ - 1);
380  }
381  return lay;
382 }
bool waferHexagon6() const
int layerIndex(int lay, bool reco) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< double > zLayerHex_
std::vector< int > layerGroupO_
const HGCalParameters * hgpar_
int HGCalDDDConstants::getLayerOffset ( ) const
inline

Definition at line 58 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::layerOffset_.

Referenced by HGCalNumberingScheme::getUnitID().

58 { return hgpar_->layerOffset_; }
const HGCalParameters * hgpar_
HGCalParameters::hgtrap HGCalDDDConstants::getModule ( unsigned int  k,
bool  hexType,
bool  reco 
) const

Definition at line 384 of file HGCalDDDConstants.cc.

References HGCalParameters::getModule(), HGCSiliconDetId::HGCalCoarseThick, hgpar_, findQualityFiles::size, HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, and HGCalParameters::waferTypeL_.

Referenced by HGCalGeometryLoader::build(), and HGCalGeometry::getSummary().

384  {
386  if (hexType) {
387  if (indx >= hgpar_->waferTypeL_.size())
388  edm::LogWarning("HGCalGeom") << "Wafer no. out bound for index " << indx << ":" << (hgpar_->waferTypeL_).size()
389  << ":" << (hgpar_->waferPosX_).size() << ":" << (hgpar_->waferPosY_).size()
390  << " ***** ERROR *****";
391  unsigned int type =
392  ((indx < hgpar_->waferTypeL_.size()) ? hgpar_->waferTypeL_[indx] - 1 : HGCSiliconDetId::HGCalCoarseThick);
393  mytr = hgpar_->getModule(type, reco);
394  } else {
395  mytr = hgpar_->getModule(indx, reco);
396  }
397  return mytr;
398 }
std::vector< double > waferPosY_
hgtrap getModule(unsigned int k, bool reco) const
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::vector< int > waferTypeL_
tuple size
Write out results.
std::vector< HGCalParameters::hgtrap > HGCalDDDConstants::getModules ( ) const

Definition at line 400 of file HGCalDDDConstants.cc.

References HGCalParameters::getModule(), hgpar_, isotrackApplyRegressor::k, and HGCalParameters::moduleLayR_.

400  {
401  std::vector<HGCalParameters::hgtrap> mytrs;
402  for (unsigned int k = 0; k < hgpar_->moduleLayR_.size(); ++k)
403  mytrs.emplace_back(hgpar_->getModule(k, true));
404  return mytrs;
405 }
std::vector< int > moduleLayR_
hgtrap getModule(unsigned int k, bool reco) const
const HGCalParameters * hgpar_
const HGCalParameters* HGCalDDDConstants::getParameter ( ) const
inline
int HGCalDDDConstants::getPhiBins ( int  lay) const

Definition at line 407 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::scintCells(), and tileTrapezoid().

407 { return (tileTrapezoid() ? hgpar_->scintCells(lay) : 0); }
bool tileTrapezoid() const
int scintCells(const int layer) const
const HGCalParameters * hgpar_
const std::vector<double>& HGCalDDDConstants::getRadiusLayer ( int  layer) const
inline

Definition at line 64 of file HGCalDDDConstants.h.

References hgpar_, HGCalParameters::radiusLayer_, HGCalParameters::scintType(), and tileTrapezoid().

64  {
65  int type = (tileTrapezoid() ? hgpar_->scintType(layer) : 0);
66  return hgpar_->radiusLayer_[type];
67  }
int scintType(const int layer) const
constexpr std::array< uint8_t, layerIndexSize > layer
bool tileTrapezoid() const
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
std::pair< int, int > HGCalDDDConstants::getREtaRange ( int  lay) const

Definition at line 409 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::iradMaxBH_, HGCalParameters::iradMinBH_, layerIndex(), and tileTrapezoid().

Referenced by HGCalTriggerGeometryV9Imp2::getModuleFromTriggerCell(), and HGCalTriggerGeometryV9Imp2::getTriggerCellsFromModule().

409  {
410  int irmin(0), irmax(0);
411  if (tileTrapezoid()) {
412  int indx = layerIndex(lay, false);
413  if ((indx >= 0) && (indx < static_cast<int>(hgpar_->iradMinBH_.size()))) {
414  irmin = hgpar_->iradMinBH_[indx];
415  irmax = hgpar_->iradMaxBH_[indx];
416  }
417  }
418  return std::make_pair(irmin, irmax);
419 }
std::vector< int > iradMaxBH_
int layerIndex(int lay, bool reco) const
bool tileTrapezoid() const
std::vector< int > iradMinBH_
const HGCalParameters * hgpar_
HGCalParameters::hgtrform HGCalDDDConstants::getTrForm ( unsigned int  k) const
inline

Definition at line 68 of file HGCalDDDConstants.h.

References HGCalParameters::getTrForm(), and hgpar_.

Referenced by HGCalGeometryLoader::build(), HGCalGeometry::getSummary(), and HGCalDDDConstants().

68 { return hgpar_->getTrForm(k); }
hgtrform getTrForm(unsigned int k) const
const HGCalParameters * hgpar_
unsigned int HGCalDDDConstants::getTrFormN ( ) const
inline

Definition at line 69 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::trformIndex_.

Referenced by HGCalGeometryLoader::build(), HGCalGeometry::getSummary(), and HGCalDDDConstants().

69 { return hgpar_->trformIndex_.size(); }
std::vector< uint32_t > trformIndex_
const HGCalParameters * hgpar_
std::vector< HGCalParameters::hgtrform > HGCalDDDConstants::getTrForms ( ) const

Definition at line 421 of file HGCalDDDConstants.cc.

References HGCalParameters::getTrForm(), hgpar_, isotrackApplyRegressor::k, and HGCalParameters::trformIndex_.

Referenced by HGCalTrackCollectionProducer::beginLuminosityBlock().

421  {
422  std::vector<HGCalParameters::hgtrform> mytrs;
423  for (unsigned int k = 0; k < hgpar_->trformIndex_.size(); ++k)
424  mytrs.emplace_back(hgpar_->getTrForm(k));
425  return mytrs;
426 }
std::vector< uint32_t > trformIndex_
hgtrform getTrForm(unsigned int k) const
const HGCalParameters * hgpar_
int HGCalDDDConstants::getTypeHex ( int  layer,
int  waferU,
int  waferV 
) const

Definition at line 437 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::typesInLayers_, waferHexagon8(), HGCalWaferIndex::waferIndex(), and HGCalParameters::waferTypeL_.

Referenced by HGCalGeometryLoader::build(), HGCalTriggerGeometryV9Imp2::detIdWaferType(), HGCalTriggerGeometryV9Imp3::detIdWaferType(), and HGCalTopology::neighbors().

437  {
438  // Get the module type for a silicon wafer
439  if (waferHexagon8()) {
441  return ((itr == hgpar_->typesInLayers_.end() ? 2 : hgpar_->waferTypeL_[itr->second]));
442  } else {
443  return -1;
444  }
445 }
int32_t waferU(const int32_t index)
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
wafer_map typesInLayers_
int32_t waferV(const int32_t index)
bool waferHexagon8() const
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
int HGCalDDDConstants::getTypeTrap ( int  layer) const

Definition at line 428 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::scintType(), and tileTrapezoid().

Referenced by HGCalTriggerGeometryV9Imp3::detIdWaferType().

428  {
429  // Get the module type for scinitllator
430  if (tileTrapezoid()) {
431  return hgpar_->scintType(layer);
432  } else {
433  return -1;
434  }
435 }
int scintType(const int layer) const
constexpr std::array< uint8_t, layerIndexSize > layer
bool tileTrapezoid() const
const HGCalParameters * hgpar_
int HGCalDDDConstants::getUVMax ( int  type) const
inline
std::pair< double, double > HGCalDDDConstants::getXY ( int  layer,
double  x,
double  y,
bool  forwd 
) const

Definition at line 447 of file HGCalDDDConstants.cc.

References HGCalParameters::firstLayer_, hgpar_, HGCalParameters::layerRotV_, and HGCalParameters::layerType_.

Referenced by localToGlobal8(), locateCell(), waferFromPosition(), waferLocal2Global(), and waferPosition().

447  {
448  int ll = layer - hgpar_->firstLayer_;
449  double x0(x), y0(y);
450  if ((!hgpar_->layerType_.empty()) && (ll < static_cast<int>(hgpar_->layerRotV_.size()))) {
451  if (forwd) {
452  x0 = x * hgpar_->layerRotV_[ll].first + y * hgpar_->layerRotV_[ll].second;
453  y0 = y * hgpar_->layerRotV_[ll].first - x * hgpar_->layerRotV_[ll].second;
454  } else {
455  x0 = x * hgpar_->layerRotV_[ll].first - y * hgpar_->layerRotV_[ll].second;
456  y0 = y * hgpar_->layerRotV_[ll].first + x * hgpar_->layerRotV_[ll].second;
457  }
458  }
459 #ifdef EDM_ML_DEBUG
460  double x1(x0), y1(y0);
461  if (ll < static_cast<int>(hgpar_->layerRotV_.size())) {
462  if (forwd) {
463  x1 = x0 * hgpar_->layerRotV_[ll].first - y0 * hgpar_->layerRotV_[ll].second;
464  y1 = y0 * hgpar_->layerRotV_[ll].first + x0 * hgpar_->layerRotV_[ll].second;
465  } else {
466  x1 = x0 * hgpar_->layerRotV_[ll].first + y0 * hgpar_->layerRotV_[ll].second;
467  y1 = y0 * hgpar_->layerRotV_[ll].first - x0 * hgpar_->layerRotV_[ll].second;
468  }
469  }
470  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants: Layer " << layer << ":" << ll << " mode " << forwd << " x " << x
471  << ":" << x0 << ":" << x1 << " y " << y << ":" << y0 << ":" << y1;
472 #endif
473  return std::make_pair(x0, y0);
474 }
Log< level::Info, true > LogVerbatim
std::vector< std::pair< double, double > > layerRotV_
constexpr std::array< uint8_t, layerIndexSize > layer
std::vector< int > layerType_
const HGCalParameters * hgpar_
bool HGCalDDDConstants::isHalfCell ( int  waferType,
int  cell 
) const

Definition at line 476 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseHalf_, HGCalParameters::cellFineHalf_, and hgpar_.

Referenced by hgcal::RecHitTools::isHalfCell().

476  {
477  if (waferType < 1 || cell < 0)
478  return false;
479  return waferType == 2 ? hgpar_->cellCoarseHalf_[cell] : hgpar_->cellFineHalf_[cell];
480 }
std::vector< bool > cellCoarseHalf_
std::vector< bool > cellFineHalf_
const HGCalParameters * hgpar_
int waferType(DetId const &id, bool fromFile=false) const
bool HGCalDDDConstants::isValidCell ( int  layindex,
int  wafer,
int  cell 
) const
private

Definition at line 1641 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, HGCSiliconDetId::HGCalFine, hgpar_, mps_fire::result, HGCalParameters::rMaxLayHex_, HGCalParameters::rMinLayHex_, findQualityFiles::rr, mathSSE::sqrt(), HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalParameters::waferTypeT_, x, and y.

Referenced by isValidHex().

1641  {
1642  // Calculate the position of the cell
1643  // Works for options HGCalHexagon/HGCalHexagonFull
1644  double x = hgpar_->waferPosX_[wafer];
1645  double y = hgpar_->waferPosY_[wafer];
1646  if (hgpar_->waferTypeT_[wafer] - 1 == HGCSiliconDetId::HGCalFine) {
1647  x += hgpar_->cellFineX_[cell];
1648  y += hgpar_->cellFineY_[cell];
1649  } else {
1650  x += hgpar_->cellCoarseX_[cell];
1651  y += hgpar_->cellCoarseY_[cell];
1652  }
1653  double rr = sqrt(x * x + y * y);
1654  bool result = ((rr >= hgpar_->rMinLayHex_[lay - 1]) && (rr <= hgpar_->rMaxLayHex_[lay - 1]) &&
1655  (wafer < (int)(hgpar_->waferPosX_.size())));
1656 #ifdef EDM_ML_DEBUG
1657  if (!result)
1658  edm::LogVerbatim("HGCalGeom") << "Input " << lay << ":" << wafer << ":" << cell << " Position " << x << ":" << y
1659  << ":" << rr << " Compare Limits " << hgpar_->rMinLayHex_[lay - 1] << ":"
1660  << hgpar_->rMaxLayHex_[lay - 1] << " Flag " << result;
1661 #endif
1662  return result;
1663 }
std::vector< double > waferPosY_
Log< level::Info, true > LogVerbatim
std::vector< double > cellFineY_
tuple result
Definition: mps_fire.py:311
std::vector< double > cellCoarseX_
T sqrt(T t)
Definition: SSEVec.h:19
std::vector< double > rMinLayHex_
std::vector< double > rMaxLayHex_
std::vector< double > cellFineX_
std::vector< int > waferTypeT_
std::vector< double > cellCoarseY_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
bool HGCalDDDConstants::isValidCell8 ( int  lay,
int  waferU,
int  waferV,
int  cellU,
int  cellV,
int  type 
) const
private

Definition at line 1665 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseIndex_, HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineIndex_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, HGCalParameters::firstLayer_, HGCalWaferMask::goodCell(), HGCalGeometryMode::Hexagon8File, HGCalGeometryMode::Hexagon8Module, hgpar_, mode_, N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, mps_fire::result, HGCalParameters::rMaxLayHex_, HGCalParameters::rMinLayHex_, findQualityFiles::rr, mathSSE::sqrt(), waferPositionNoRot(), waferTypeRotation(), x, xy(), and y.

Referenced by isValidHex8().

1665  {
1666  float x(0), y(0);
1667  int kndx = cellV * 100 + cellU;
1668  if (type == 0) {
1669  auto ktr = hgpar_->cellFineIndex_.find(kndx);
1670  if (ktr != hgpar_->cellFineIndex_.end()) {
1671  x = hgpar_->cellFineX_[ktr->second];
1672  y = hgpar_->cellFineY_[ktr->second];
1673  }
1674 #ifdef EDM_ML_DEBUG
1675  edm::LogVerbatim("HGCalGeom") << "Fine " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
1676  << (ktr != hgpar_->cellFineIndex_.end());
1677 #endif
1678  } else {
1679  auto ktr = hgpar_->cellCoarseIndex_.find(kndx);
1680  if (ktr != hgpar_->cellCoarseIndex_.end()) {
1681  x = hgpar_->cellCoarseX_[ktr->second];
1682  y = hgpar_->cellCoarseY_[ktr->second];
1683  }
1684 #ifdef EDM_ML_DEBUG
1685  edm::LogVerbatim("HGCalGeom") << "Coarse " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
1686  << (ktr != hgpar_->cellCoarseIndex_.end());
1687 #endif
1688  }
1689  const auto& xy = waferPositionNoRot(lay, waferU, waferV, true, false);
1690  x += xy.first;
1691  y += xy.second;
1692 #ifdef EDM_ML_DEBUG
1693  edm::LogVerbatim("HGCalGeom") << "With wafer (" << waferU << "," << waferV << ") " << x << ":" << y;
1694 #endif
1695  double rr = sqrt(x * x + y * y);
1696  int ll = lay - hgpar_->firstLayer_;
1697  bool result = ((rr >= hgpar_->rMinLayHex_[ll]) && (rr <= hgpar_->rMaxLayHex_[ll]));
1698 #ifdef EDM_ML_DEBUG
1699  edm::LogVerbatim("HGCalGeom") << "Input " << lay << ":" << ll << ":" << waferU << ":" << waferV << ":" << cellU << ":"
1700  << cellV << " Position " << x << ":" << y << ":" << rr << " Compare Limits "
1701  << hgpar_->rMinLayHex_[ll] << ":" << hgpar_->rMaxLayHex_[ll] << " Flag " << result;
1702 #endif
1704  int N = (type == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
1705  auto partn = waferTypeRotation(lay, waferU, waferV, false, false);
1706  result = HGCalWaferMask::goodCell(cellU, cellV, N, partn.first, partn.second);
1707 #ifdef EDM_ML_DEBUG
1708  edm::LogVerbatim("HGCalGeom") << "Input " << lay << ":" << waferU << ":" << waferV << ":" << cellU << ":" << cellV
1709  << " N " << N << " part " << partn.first << ":" << partn.second << " Result "
1710  << result;
1711 #endif
1712  }
1713  return result;
1714 }
Log< level::Info, true > LogVerbatim
wafer_map cellFineIndex_
std::pair< int, int > waferTypeRotation(int layer, int waferU, int waferV, bool fromFile=false, bool debug=false) const
int32_t waferU(const int32_t index)
static bool goodCell(int u, int v, int N, int type, int rotn)
std::vector< double > cellFineY_
tuple result
Definition: mps_fire.py:311
std::vector< double > cellCoarseX_
T sqrt(T t)
Definition: SSEVec.h:19
std::vector< double > rMinLayHex_
std::vector< double > rMaxLayHex_
Basic2DVector< T > xy() const
#define N
Definition: blowfish.cc:9
wafer_map cellCoarseIndex_
std::vector< double > cellFineX_
const HGCalGeometryMode::GeometryMode mode_
int32_t waferV(const int32_t index)
std::vector< double > cellCoarseY_
std::pair< double, double > waferPositionNoRot(int lay, int waferU, int waferV, bool reco, bool debug=false) const
const HGCalParameters * hgpar_
bool HGCalDDDConstants::isValidHex ( int  lay,
int  mod,
int  cell,
bool  reco 
) const

Definition at line 482 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellFineX_, HGCalParameters::copiesInLayers_, HGCSiliconDetId::HGCalFine, hgpar_, isValidCell(), layers(), maxCells(), mod(), mps_fire::result, findQualityFiles::size, HGCalParameters::waferCopy_, waferHexagon6(), and HGCalParameters::waferTypeT_.

Referenced by HGCNumberingScheme::getUnitID(), and HGCalTopology::valid().

482  {
483  // Check validity for a layer|wafer|cell of pre-TDR version
484  bool result(false), resultMod(false);
485  int cellmax(0);
486  if (waferHexagon6()) {
487  int32_t copyNumber = hgpar_->waferCopy_[mod];
488  result = ((lay > 0 && lay <= (int)(layers(reco))));
489  if (result) {
490  const int32_t lay_idx = reco ? (lay - 1) * 3 + 1 : lay;
491  const auto& the_modules = hgpar_->copiesInLayers_[lay_idx];
492  auto moditr = the_modules.find(copyNumber);
493  result = resultMod = (moditr != the_modules.end());
494 #ifdef EDM_ML_DEBUG
495  if (!result)
496  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants: Layer " << lay << ":" << lay_idx << " Copy " << copyNumber
497  << ":" << mod << " Flag " << result;
498 #endif
499  if (result) {
500  if (moditr->second >= 0) {
501  if (mod >= (int)(hgpar_->waferTypeT_.size()))
502  edm::LogWarning("HGCalGeom") << "Module no. out of bound for " << mod << " to be compared with "
503  << (hgpar_->waferTypeT_).size() << " ***** ERROR *****";
504  cellmax = ((hgpar_->waferTypeT_[mod] - 1 == HGCSiliconDetId::HGCalFine) ? (int)(hgpar_->cellFineX_.size())
505  : (int)(hgpar_->cellCoarseX_.size()));
506  result = (cell >= 0 && cell <= cellmax);
507  } else {
508  result = isValidCell(lay_idx, mod, cell);
509  }
510  }
511  }
512  }
513 
514 #ifdef EDM_ML_DEBUG
515  if (!result)
516  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants: Layer " << lay << ":"
517  << (lay > 0 && (lay <= (int)(layers(reco)))) << " Module " << mod << ":" << resultMod
518  << " Cell " << cell << ":" << cellmax << ":" << (cell >= 0 && cell <= cellmax) << ":"
519  << maxCells(reco);
520 #endif
521  return result;
522 }
Log< level::Info, true > LogVerbatim
layer_map copiesInLayers_
bool waferHexagon6() const
tuple result
Definition: mps_fire.py:311
std::vector< double > cellCoarseX_
unsigned int layers(bool reco) const
bool isValidCell(int layindex, int wafer, int cell) const
std::vector< double > cellFineX_
std::vector< int > waferCopy_
std::vector< int > waferTypeT_
Log< level::Warning, false > LogWarning
const HGCalParameters * hgpar_
int maxCells(bool reco) const
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
tuple size
Write out results.
bool HGCalDDDConstants::isValidHex8 ( int  lay,
int  waferU,
int  waferV,
bool  fullAndPart = false 
) const

Definition at line 524 of file HGCalDDDConstants.cc.

References fullAndPart_, hgpar_, HGCalParameters::typesInLayers_, HGCalTypes::WaferCornerMin, waferIn_, HGCalWaferIndex::waferIndex(), HGCalParameters::waferInfoMap_, HGCalParameters::waferMaskMode_, HGCalTypes::WaferOut, and HGCalParameters::waferTypes_.

Referenced by HGCalTopology::addHGCSiliconId(), isValidHex8(), HGCalTopology::valid(), and HGCalTopology::validModule().

524  {
525  // Check validity for a layer|wafer|cell of post-TDR version
526  int indx = HGCalWaferIndex::waferIndex(layer, modU, modV);
527  auto itr = hgpar_->typesInLayers_.find(indx);
528 #ifdef EDM_ML_DEBUG
529  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants::isValidHex8:WaferType " << layer << ":" << modU << ":" << modV
530  << ":" << indx << " Test " << (itr != hgpar_->typesInLayers_.end());
531 #endif
532  if (itr == hgpar_->typesInLayers_.end())
533  return false;
534 
535  if (fullAndPart_) {
536  auto ktr = hgpar_->waferInfoMap_.find(indx);
537 #ifdef EDM_ML_DEBUG
538  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants::isValidHex8:WaferInfoMap " << layer << ":" << modU << ":"
539  << modV << ":" << indx << " Test " << (ktr != hgpar_->waferInfoMap_.end());
540 #endif
541  if (ktr == hgpar_->waferInfoMap_.end())
542  return false;
543  } else {
544  auto jtr = waferIn_.find(indx);
545 #ifdef EDM_ML_DEBUG
546  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants::isValidHex8:WaferIn " << jtr->first << ":" << jtr->second;
547 #endif
548  if (!(jtr->second))
549  return false;
550  }
551 
552  if (fullAndPart || fullAndPart_) {
553  auto ktr = hgpar_->waferTypes_.find(indx);
554  if (ktr != hgpar_->waferTypes_.end()) {
555  if (hgpar_->waferMaskMode_ > 0) {
556  if (ktr->second.first == HGCalTypes::WaferOut)
557  return false;
558  } else {
559  if (ktr->second.first < HGCalTypes::WaferCornerMin)
560  return false;
561  }
562  }
563  }
564  return true;
565 }
Log< level::Info, true > LogVerbatim
std::unordered_map< int32_t, bool > waferIn_
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
wafer_map typesInLayers_
static constexpr int32_t WaferCornerMin
Definition: HGCalTypes.h:90
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
bool HGCalDDDConstants::isValidHex8 ( int  lay,
int  modU,
int  modV,
int  cellU,
int  cellV,
bool  fullAndPart = false 
) const

Definition at line 567 of file HGCalDDDConstants.cc.

References hgpar_, isValidCell8(), isValidHex8(), N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, HGCalParameters::typesInLayers_, HGCalWaferIndex::waferIndex(), and HGCalParameters::waferTypeL_.

567  {
568  // First check validity for a layer|wafer| of post TDR version
569  if (!isValidHex8(layer, modU, modV, fullAndPart))
570  return false;
571  int indx = HGCalWaferIndex::waferIndex(layer, modU, modV);
572  auto itr = hgpar_->typesInLayers_.find(indx);
573  int type = hgpar_->waferTypeL_[itr->second];
574  int N = ((hgpar_->waferTypeL_[itr->second] == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_);
575 #ifdef EDM_ML_DEBUG
576  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants::isValidHex8:Cell " << cellU << ":" << cellV << ":" << N
577  << " Tests " << (cellU >= 0) << ":" << (cellU < 2 * N) << ":" << (cellV >= 0) << ":"
578  << (cellV < 2 * N) << ":" << ((cellV - cellU) < N) << ":" << ((cellU - cellV) <= N);
579 #endif
580  if ((cellU < 0) || (cellU >= 2 * N) || (cellV < 0) || (cellV >= 2 * N))
581  return false;
582  if (((cellV - cellU) >= N) || ((cellU - cellV) > N))
583  return false;
584 
585  return isValidCell8(layer, modU, modV, cellU, cellV, type);
586 }
Log< level::Info, true > LogVerbatim
bool isValidCell8(int lay, int waferU, int waferV, int cellU, int cellV, int type) const
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
#define N
Definition: blowfish.cc:9
bool isValidHex8(int lay, int waferU, int waferV, bool fullAndPart=false) const
wafer_map typesInLayers_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
bool HGCalDDDConstants::isValidTrap ( int  lay,
int  ieta,
int  iphi 
) const

Definition at line 588 of file HGCalDDDConstants.cc.

References getIndex(), hgpar_, HGCalParameters::iradMaxBH_, and HGCalParameters::iradMinBH_.

Referenced by HGCalTopology::addHGCSCintillatorId(), and HGCalTopology::valid().

588  {
589  // Check validity for a layer|eta|phi of scintillator
590  const auto& indx = getIndex(layer, true);
591  if (indx.first < 0)
592  return false;
593  return ((irad >= hgpar_->iradMinBH_[indx.first]) && (irad <= (hgpar_->iradMaxBH_[indx.first] + 1)) && (iphi > 0) &&
594  (iphi <= hgpar_->scintCells(layer)));
595 }
std::vector< int > iradMaxBH_
constexpr std::array< uint8_t, layerIndexSize > layer
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< int > iradMinBH_
const HGCalParameters * hgpar_
int HGCalDDDConstants::lastLayer ( bool  reco) const
int HGCalDDDConstants::layerFromIndex ( int  index,
bool  reco 
) const
private

Definition at line 1621 of file HGCalDDDConstants.cc.

References HGCalParameters::depthLayerF_, spr::find(), HGCalParameters::firstLayer_, hgpar_, HGCalParameters::layerIndex_, and waferHexagon6().

Referenced by waferIndex().

1621  {
1622  int ll(-1);
1623  if (waferHexagon6() && reco) {
1624  ll = static_cast<int>(std::find(hgpar_->depthLayerF_.begin(), hgpar_->depthLayerF_.end(), index) -
1625  hgpar_->depthLayerF_.begin());
1626  if (ll == static_cast<int>(hgpar_->depthLayerF_.size()))
1627  ll = -1;
1628  } else {
1629  ll = static_cast<int>(std::find(hgpar_->layerIndex_.begin(), hgpar_->layerIndex_.end(), index) -
1630  hgpar_->layerIndex_.begin());
1631  if (ll == static_cast<int>(hgpar_->layerIndex_.size()))
1632  ll = -1;
1633  }
1634 #ifdef EDM_ML_DEBUG
1635  edm::LogVerbatim("HGCalGeom") << "LayerFromIndex for " << index << ":" << reco << ":" << waferHexagon6() << " is"
1636  << ll << ":" << (ll + hgpar_->firstLayer_);
1637 #endif
1638  return ((ll < 0) ? ll : (ll + hgpar_->firstLayer_));
1639 }
Log< level::Info, true > LogVerbatim
std::vector< int > depthLayerF_
bool waferHexagon6() const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
std::vector< int > layerIndex_
const HGCalParameters * hgpar_
int HGCalDDDConstants::layerIndex ( int  lay,
bool  reco 
) const

Definition at line 601 of file HGCalDDDConstants.cc.

References HGCalParameters::depthIndex_, HGCalParameters::depthLayerF_, HGCalParameters::firstLayer_, hgpar_, HGCalParameters::layerIndex_, and waferHexagon6().

Referenced by HGCalGeometryLoader::build(), distFromEdgeHex(), distFromEdgeTrap(), getIndex(), getLayer(), getREtaRange(), and HGCalGeometry::getSummary().

601  {
602  int ll = lay - hgpar_->firstLayer_;
603  if (ll < 0 || ll >= (int)(hgpar_->layerIndex_.size()))
604  return -1;
605  if (waferHexagon6()) {
606  if (reco && ll >= (int)(hgpar_->depthIndex_.size()))
607  return -1;
608  return (reco ? hgpar_->depthLayerF_[ll] : hgpar_->layerIndex_[ll]);
609  } else {
610  return (hgpar_->layerIndex_[ll]);
611  }
612 }
std::vector< int > depthLayerF_
bool waferHexagon6() const
std::vector< int > layerIndex_
std::vector< int > depthIndex_
const HGCalParameters * hgpar_
unsigned int HGCalDDDConstants::layers ( bool  reco) const
unsigned int HGCalDDDConstants::layersInit ( bool  reco) const

Definition at line 614 of file HGCalDDDConstants.cc.

References HGCalParameters::depthIndex_, hgpar_, and HGCalParameters::layerIndex_.

Referenced by HGCalDDDConstants().

614  {
615  return (reco ? hgpar_->depthIndex_.size() : hgpar_->layerIndex_.size());
616 }
std::vector< int > layerIndex_
std::vector< int > depthIndex_
const HGCalParameters * hgpar_
int HGCalDDDConstants::levelTop ( int  ind = 0) const
inline

Definition at line 100 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::levelT_.

Referenced by HGCScintSD::update(), HGCalSD::update(), HFNoseSD::update(), and HGCSD::update().

100 { return hgpar_->levelT_[ind]; }
std::vector< int > levelT_
const HGCalParameters * hgpar_
std::pair< float, float > HGCalDDDConstants::localToGlobal8 ( int  lay,
int  waferU,
int  waferV,
double  localX,
double  localY,
bool  reco,
bool  debug 
) const

Definition at line 618 of file HGCalDDDConstants.cc.

References HGCalParameters::firstLayer_, getXY(), hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::layerType_, HGCalTypes::WaferCenterR, waferPositionNoRot(), x, xy(), and y.

Referenced by HGCalGeometry::get8Corners(), HGCalGeometry::getCorners(), and HGCalGeometry::getNewCorners().

619  {
620  double x(localX), y(localY);
621  bool rotx =
623  if (debug)
624  edm::LogVerbatim("HGCalGeom") << "LocalToGlobal8 " << lay << ":" << (lay - hgpar_->firstLayer_) << ":" << rotx
625  << " Local (" << x << ":" << y << ") Reco " << reco;
626  if (!reco) {
629  }
630  const auto& xy = waferPositionNoRot(lay, waferU, waferV, reco, debug);
631  x += xy.first;
632  y += xy.second;
633  if (debug)
634  edm::LogVerbatim("HGCalGeom") << "With wafer " << x << ":" << y << " by adding " << xy.first << ":" << xy.second;
635  return (rotx ? getXY(lay, x, y, false) : std::make_pair(x, y));
636 }
Log< level::Info, true > LogVerbatim
int32_t waferU(const int32_t index)
std::vector< int > layerType_
std::pair< double, double > getXY(int layer, double x, double y, bool forwd) const
Basic2DVector< T > xy() const
static constexpr double k_ScaleToDDD
#define debug
Definition: HDRShower.cc:19
constexpr uint16_t localX(uint16_t px)
constexpr uint16_t localY(uint16_t py, uint16_t n)
int32_t waferV(const int32_t index)
std::pair< double, double > waferPositionNoRot(int lay, int waferU, int waferV, bool reco, bool debug=false) const
const HGCalParameters * hgpar_
std::pair< float, float > HGCalDDDConstants::locateCell ( int  cell,
int  lay,
int  type,
bool  reco 
) const

Definition at line 638 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, getIndex(), HGCSiliconDetId::HGCalFine, hgpar_, mps_fire::i, HGCalParameters::k_ScaleToDDD, waferHexagon6(), HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalParameters::waferTypeT_, x, and y.

Referenced by HGCalSimHitValidation::analyzeHits(), HGCalTBAnalyzer::analyzeSimHits(), cellInLayer(), HFNoseNumberingScheme::checkPosition(), HGCalNumberingScheme::checkPosition(), HGCalGeometry::get8Corners(), HGCalGeometry::getCorners(), HGCNumberingScheme::getLocalCoords(), HGCalGeometry::getNewCorners(), and HGCalGeometry::getPosition().

638  {
639  // type refers to wafer # for hexagon cell
640  float x(999999.), y(999999.);
641  const auto& index = getIndex(lay, reco);
642  int i = index.first;
643  if (i < 0)
644  return std::make_pair(x, y);
645  if (waferHexagon6()) {
646  x = hgpar_->waferPosX_[type];
647  y = hgpar_->waferPosY_[type];
648 #ifdef EDM_ML_DEBUG
649  float x0(x), y0(y);
650 #endif
652  x += hgpar_->cellFineX_[cell];
653  y += hgpar_->cellFineY_[cell];
654  } else {
655  x += hgpar_->cellCoarseX_[cell];
656  y += hgpar_->cellCoarseY_[cell];
657  }
658 #ifdef EDM_ML_DEBUG
659  edm::LogVerbatim("HGCalGeom") << "LocateCell (Wafer) " << x0 << ":" << y0 << " Final " << x << ":" << y;
660 #endif
661  if (!reco) {
664  }
665  }
666  return std::make_pair(x, y);
667 }
std::vector< double > waferPosY_
Log< level::Info, true > LogVerbatim
bool waferHexagon6() const
std::vector< double > cellFineY_
std::vector< double > cellCoarseX_
std::pair< int, float > getIndex(int lay, bool reco) const
static constexpr double k_ScaleToDDD
std::vector< double > cellFineX_
std::vector< int > waferTypeT_
std::vector< double > cellCoarseY_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::pair< float, float > HGCalDDDConstants::locateCell ( int  lay,
int  waferU,
int  waferV,
int  cellU,
int  cellV,
bool  reco,
bool  all,
bool  norot = false,
bool  debug = false 
) const

Definition at line 669 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseIndex_, HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineIndex_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, HGCalParameters::firstLayer_, getXY(), hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::layerType_, HGCalParameters::typesInLayers_, HGCalTypes::WaferCenterR, HGCalWaferIndex::waferIndex(), waferPositionNoRot(), HGCalParameters::waferTypeL_, x, xy(), and y.

670  {
671  double x(0), y(0);
672  int indx = HGCalWaferIndex::waferIndex(lay, waferU, waferV);
673  auto itr = hgpar_->typesInLayers_.find(indx);
674  int type = ((itr == hgpar_->typesInLayers_.end()) ? 2 : hgpar_->waferTypeL_[itr->second]);
675  bool rotx = (norot) ? false
676  : ((!hgpar_->layerType_.empty()) &&
678  if (debug) {
679  edm::LogVerbatim("HGCalGeom") << "LocateCell " << lay << ":" << (lay - hgpar_->firstLayer_) << ":" << rotx << ":"
680  << waferU << ":" << waferV << ":" << indx << ":"
681  << (itr == hgpar_->typesInLayers_.end()) << ":" << type << " Flags " << reco << ":"
682  << all;
683  }
684  int kndx = cellV * 100 + cellU;
685  if (type == 0) {
686  auto ktr = hgpar_->cellFineIndex_.find(kndx);
687  if (ktr != hgpar_->cellFineIndex_.end()) {
688  x = hgpar_->cellFineX_[ktr->second];
689  y = hgpar_->cellFineY_[ktr->second];
690  }
691  if (debug)
692  edm::LogVerbatim("HGCalGeom") << "Fine " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
693  << (ktr != hgpar_->cellFineIndex_.end());
694  } else {
695  auto ktr = hgpar_->cellCoarseIndex_.find(kndx);
696  if (ktr != hgpar_->cellCoarseIndex_.end()) {
697  x = hgpar_->cellCoarseX_[ktr->second];
698  y = hgpar_->cellCoarseY_[ktr->second];
699  }
700  if (debug)
701  edm::LogVerbatim("HGCalGeom") << "Coarse " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
702  << (ktr != hgpar_->cellCoarseIndex_.end());
703  }
704  if (!reco) {
707  }
708  if (all) {
709  const auto& xy = waferPositionNoRot(lay, waferU, waferV, reco, debug);
710  x += xy.first;
711  y += xy.second;
712  if (debug)
713  edm::LogVerbatim("HGCalGeom") << "With wafer " << x << ":" << y << " by adding " << xy.first << ":" << xy.second;
714  }
715  return (rotx ? getXY(lay, x, y, false) : std::make_pair(x, y));
716 }
Log< level::Info, true > LogVerbatim
wafer_map cellFineIndex_
int32_t waferU(const int32_t index)
std::vector< double > cellFineY_
std::vector< double > cellCoarseX_
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
std::vector< int > layerType_
def all
workaround iterator generators for ROOT classes
Definition: cmstools.py:25
std::pair< double, double > getXY(int layer, double x, double y, bool forwd) const
Basic2DVector< T > xy() const
static constexpr double k_ScaleToDDD
#define debug
Definition: HDRShower.cc:19
wafer_map cellCoarseIndex_
std::vector< double > cellFineX_
wafer_map typesInLayers_
int32_t waferV(const int32_t index)
std::vector< double > cellCoarseY_
std::pair< double, double > waferPositionNoRot(int lay, int waferU, int waferV, bool reco, bool debug=false) const
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
std::pair< float, float > HGCalDDDConstants::locateCell ( const HGCSiliconDetId id,
bool  debug = false 
) const

Definition at line 718 of file HGCalDDDConstants.cc.

References geomTools_, getXY(), hgpar_, phase1PixelTopology::layer, HGCalParameters::layerCenter_, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, dttmaxenums::R, alignCSCRings::r, diffTwoXMLs::r1, HGCalParameters::sensorSeparation_, HGCalGeomTools::shiftXY(), sqrt3_, HGCalParameters::waferSize_, and xy().

718  {
719  int lay(id.layer());
720  double r = 0.5 * (hgpar_->waferSize_ + hgpar_->sensorSeparation_);
721  double R = 2.0 * r / sqrt3_;
722  int ncells = (id.type() == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
723  int n2 = ncells / 2;
724  auto xyoff = geomTools_.shiftXY(hgpar_->layerCenter_[lay - 1], (2.0 * r));
725  double xpos = xyoff.first + ((-2 * id.waferU() + id.waferV()) * r);
726  double ypos = xyoff.second + (1.5 * id.waferV() * R);
727 #ifdef EDM_ML_DEBUG
728  if (debug)
729  edm::LogVerbatim("HGCalGeom") << "LocateCell " << id << " Lay " << lay << " r:R " << r << ":" << R << " N "
730  << ncells << ":" << n2 << " Off " << xyoff.first << ":" << xyoff.second << " Pos "
731  << xpos << ":" << ypos;
732 #endif
733  double R1 = hgpar_->waferSize_ / (3.0 * ncells);
734  double r1 = 0.5 * R1 * sqrt3_;
735  xpos += ((1.5 * (id.cellV() - ncells) + 1.0) * R1);
736  ypos += ((id.cellU() - 0.5 * id.cellV() - n2) * 2 * r1);
737 #ifdef EDM_ML_DEBUG
738  if (debug)
739  edm::LogVerbatim("HGCalGeom") << "LocateCell r1:R1 " << r1 << ":" << R1 << " dx:dy "
740  << ((1.5 * (id.cellV() - ncells) + 1.0) * R1) << ":"
741  << ((id.cellU() - 0.5 * id.cellV() - n2) * 2 * r1) << " Pos " << xpos << ":" << ypos;
742 #endif
743  std::pair<double, double> xy = getXY(id.layer(), xpos, ypos, true);
744  return std::make_pair(xy.first * id.zside(), xy.second);
745 }
Log< level::Info, true > LogVerbatim
constexpr std::array< uint8_t, layerIndexSize > layer
HGCalGeomTools geomTools_
std::pair< double, double > shiftXY(int waferPosition, double waferSize) const
std::vector< int > layerCenter_
std::pair< double, double > getXY(int layer, double x, double y, bool forwd) const
Basic2DVector< T > xy() const
#define debug
Definition: HDRShower.cc:19
const HGCalParameters * hgpar_
std::pair< float, float > HGCalDDDConstants::locateCell ( const HGCScintillatorDetId id,
bool  debug = false 
) const

Definition at line 747 of file HGCalDDDConstants.cc.

References angle_units::operators::convertRadToDeg(), funct::cos(), hgpar_, phase1PixelTopology::layer, phi, alignCSCRings::r, HGCalParameters::radiusLayer_, HGCalParameters::scintCellSize(), funct::sin(), and ecaldqm::zside().

747  {
748  int lay(id.layer()), iphi(id.iphi()), ir(id.iradiusAbs());
749  double phi = (iphi - 0.5) * hgpar_->scintCellSize(lay);
750  int type = (id.type() > 0) ? 1 : 0;
751  double r = (((ir + 1) < static_cast<int>(hgpar_->radiusLayer_[type].size()))
752  ? (0.5 * (hgpar_->radiusLayer_[type][ir] + hgpar_->radiusLayer_[type][ir - 1]))
753  : (1.5 * hgpar_->radiusLayer_[type][ir] - 0.5 * hgpar_->radiusLayer_[type][ir - 1]));
754 #ifdef EDM_ML_DEBUG
755  if (debug)
756  edm::LogVerbatim("HGCalGeom") << "LocateCell lay:ir:iphi:type " << lay << ":" << ir << ":" << iphi << ":" << type
757  << " r:phi " << r << ":" << convertRadToDeg(phi) << " x:y "
758  << (r * cos(phi) * id.zside()) << ":" << (r * sin(phi));
759 #endif
760  return std::make_pair(r * cos(phi) * id.zside(), r * sin(phi));
761 }
Log< level::Info, true > LogVerbatim
constexpr NumType convertRadToDeg(NumType radians)
Definition: angle_units.h:21
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
int zside(DetId const &)
double scintCellSize(const int layer) const
constexpr std::array< uint8_t, layerIndexSize > layer
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
#define debug
Definition: HDRShower.cc:19
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
std::pair< float, float > HGCalDDDConstants::locateCellHex ( int  cell,
int  wafer,
bool  reco 
) const

Definition at line 763 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, HGCSiliconDetId::HGCalFine, hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::waferTypeT_, x, and y.

Referenced by HGCalGeometry::get8Corners(), HGCalGeometry::getCorners(), HGCalGeometry::getNewCorners(), and HGCalGeometry::getPosition().

763  {
764  float x(0), y(0);
765  if (hgpar_->waferTypeT_[wafer] - 1 == HGCSiliconDetId::HGCalFine) {
766  x = hgpar_->cellFineX_[cell];
767  y = hgpar_->cellFineY_[cell];
768  } else {
769  x = hgpar_->cellCoarseX_[cell];
770  y = hgpar_->cellCoarseY_[cell];
771  }
772  if (!reco) {
775  }
776  return std::make_pair(x, y);
777 }
std::vector< double > cellFineY_
std::vector< double > cellCoarseX_
static constexpr double k_ScaleToDDD
std::vector< double > cellFineX_
std::vector< int > waferTypeT_
std::vector< double > cellCoarseY_
const HGCalParameters * hgpar_
std::pair< float, float > HGCalDDDConstants::locateCellTrap ( int  lay,
int  ieta,
int  iphi,
bool  reco 
) const

Definition at line 779 of file HGCalDDDConstants.cc.

References funct::abs(), funct::cos(), getIndex(), hgpar_, HGCalParameters::iradMaxBH_, HGCalParameters::iradMinBH_, HGCalParameters::k_ScaleToDDD, SiStripPI::max, SiStripPI::min, mode_, phi, alignCSCRings::r, HGCalParameters::radiusLayer_, sistrip::SpyUtilities::range(), rangeR(), HGCalParameters::scintType(), funct::sin(), HGCalGeometryMode::TrapezoidFile, HGCalGeometryMode::TrapezoidModule, x, y, z, and HGCalParameters::zLayerHex_.

Referenced by HGCalSimHitValidation::analyzeHits(), HGCalGeometryLoader::build(), and HGCalNumberingScheme::checkPosition().

779  {
780  float x(0), y(0);
781  const auto& indx = getIndex(lay, reco);
782  if (indx.first >= 0) {
783  int ir = std::abs(irad);
784  int type = hgpar_->scintType(lay);
785  double phi = (iphi - 0.5) * indx.second;
786  double z = hgpar_->zLayerHex_[indx.first];
787  double r = 0.5 * (hgpar_->radiusLayer_[type][ir - 1] + hgpar_->radiusLayer_[type][ir]);
788  std::pair<double, double> range = rangeR(z, true);
789 #ifdef EDM_ML_DEBUG
790  edm::LogVerbatim("HGCalGeom") << "locateCellTrap:: Input " << lay << ":" << irad << ":" << iphi << ":" << reco
791  << " IR " << ir << ":" << hgpar_->iradMinBH_[indx.first] << ":"
792  << hgpar_->iradMaxBH_[indx.first] << " Type " << type << " Z " << indx.first << ":"
793  << z << " phi " << phi << " R " << r << ":" << range.first << ":" << range.second;
794 #endif
796  r = std::max(range.first, std::min(r, range.second));
797  x = r * std::cos(phi);
798  y = r * std::sin(phi);
799  if (irad < 0)
800  x = -x;
801  }
802  if (!reco) {
805  }
806  return std::make_pair(x, y);
807 }
std::vector< int > iradMaxBH_
Log< level::Info, true > LogVerbatim
int scintType(const int layer) const
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
const uint16_t range(const Frame &aFrame)
std::pair< double, double > rangeR(double z, bool reco) const
std::pair< int, float > getIndex(int lay, bool reco) const
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< double > zLayerHex_
static constexpr double k_ScaleToDDD
std::vector< int > iradMinBH_
const HGCalGeometryMode::GeometryMode mode_
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
bool HGCalDDDConstants::maskCell ( const DetId id,
int  corners 
) const

Definition at line 809 of file HGCalDDDConstants.cc.

References DetId::det(), DetId::Forward, getUVMax(), HGCalWaferMask::goodCell(), hgpar_, gpuClustering::id, HGCalParameters::k_CornerSize, HGCalWaferMask::k_OffsetRotation, phase1PixelTopology::layer, HGCalWaferMask::maskCell(), N, edm::second(), findQualityFiles::v, waferHexagon8(), HGCalWaferIndex::waferIndex(), HGCalParameters::waferTypes_, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

Referenced by hgcal::RecHitTools::maskCell(), HGCalTopology::maskCell(), HFNoseSD::setDetUnitId(), HGCalSD::setDetUnitId(), and HGCalTopology::valid().

809  {
810  bool mask(false);
811  if (corners > 2 && corners <= (int)(HGCalParameters::k_CornerSize)) {
812  if (waferHexagon8()) {
813  int N(0), layer(0), waferU(0), waferV(0), u(0), v(0);
814  if (detId.det() == DetId::Forward) {
815  HFNoseDetId id(detId);
816  N = getUVMax(id.type());
817  layer = id.layer();
818  waferU = id.waferU();
819  waferV = id.waferV();
820  u = id.cellU();
821  v = id.cellV();
822  } else {
823  HGCSiliconDetId id(detId);
824  N = getUVMax(id.type());
825  layer = id.layer();
826  waferU = id.waferU();
827  waferV = id.waferV();
828  u = id.cellU();
829  v = id.cellV();
830  }
832  auto itr = hgpar_->waferTypes_.find(wl);
833 #ifdef EDM_ML_DEBUG
834  edm::LogVerbatim("HGCalGeom") << "MaskCell: Layer " << layer << " Wafer " << waferU << ":" << waferV << " Index "
835  << wl << ":" << (itr != hgpar_->waferTypes_.end());
836 #endif
837  if (itr != hgpar_->waferTypes_.end()) {
838  if ((itr->second).second <= HGCalWaferMask::k_OffsetRotation)
839  mask = HGCalWaferMask::maskCell(u, v, N, (itr->second).first, (itr->second).second, corners);
840  else
841  mask = !(HGCalWaferMask::goodCell(
842  u, v, N, (itr->second).first, ((itr->second).second - HGCalWaferMask::k_OffsetRotation)));
843  }
844  }
845  }
846  return mask;
847 }
Log< level::Info, true > LogVerbatim
uint16_t *__restrict__ id
int32_t waferU(const int32_t index)
static bool goodCell(int u, int v, int N, int type, int rotn)
static constexpr uint32_t k_CornerSize
constexpr std::array< uint8_t, layerIndexSize > layer
U second(std::pair< T, U > const &p)
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
#define N
Definition: blowfish.cc:9
static constexpr int k_OffsetRotation
int32_t waferV(const int32_t index)
bool waferHexagon8() const
const HGCalParameters * hgpar_
int getUVMax(int type) const
static bool maskCell(int u, int v, int N, int ncor, int fcor, int corners)
int HGCalDDDConstants::maxCells ( bool  reco) const

Definition at line 849 of file HGCalDDDConstants.cc.

References cells, HGCalParameters::depth_, hgpar_, mps_fire::i, HGCalParameters::layer_, and layers().

Referenced by HGCalDDDConstants(), HGCalTopology::HGCalTopology(), and isValidHex().

849  {
850  int cells(0);
851  for (unsigned int i = 0; i < layers(reco); ++i) {
852  int lay = reco ? hgpar_->depth_[i] : hgpar_->layer_[i];
853  if (cells < maxCells(lay, reco))
854  cells = maxCells(lay, reco);
855  }
856  return cells;
857 }
std::vector< int > layer_
std::vector< int > depth_
unsigned int layers(bool reco) const
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
const HGCalParameters * hgpar_
int maxCells(bool reco) const
int HGCalDDDConstants::maxCells ( int  lay,
bool  reco 
) const

Definition at line 859 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellFineX_, cells, HGCalParameters::defineFull_, HGCalParameters::firstLayer_, getIndex(), HGCSiliconDetId::HGCalCoarseThick, HGCSiliconDetId::HGCalFine, hgpar_, isotrackApplyRegressor::k, SiStripPI::max, N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, HGCalParameters::scintCells(), tileTrapezoid(), HGCalParameters::typesInLayers_, HGCalParameters::waferCopy_, waferHexagon6(), waferHexagon8(), HGCalWaferIndex::waferIndex(), waferInLayerTest(), HGCalParameters::waferTypeL_, HGCalParameters::waferTypeT_, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

859  {
860  const auto& index = getIndex(lay, reco);
861  if (index.first < 0)
862  return 0;
863  if (waferHexagon6()) {
864  unsigned int cells(0);
865  for (unsigned int k = 0; k < hgpar_->waferTypeT_.size(); ++k) {
866  if (waferInLayerTest(k, index.first, hgpar_->defineFull_)) {
867  unsigned int cell = (hgpar_->waferTypeT_[k] - 1 == HGCSiliconDetId::HGCalFine) ? (hgpar_->cellFineX_.size())
868  : (hgpar_->cellCoarseX_.size());
869  if (cell > cells)
870  cells = cell;
871  }
872  }
873  return (int)(cells);
874  } else if (waferHexagon8()) {
875  int cells(0);
876  for (unsigned int k = 0; k < hgpar_->waferCopy_.size(); ++k) {
877  if (waferInLayerTest(k, index.first, hgpar_->defineFull_)) {
881  : hgpar_->waferTypeL_[itr->second]);
883  cells = std::max(cells, 3 * N * N);
884  }
885  }
886  return cells;
887  } else if (tileTrapezoid()) {
888  return hgpar_->scintCells(index.first + hgpar_->firstLayer_);
889  } else {
890  return 0;
891  }
892 }
bool waferHexagon6() const
int32_t waferU(const int32_t index)
bool waferInLayerTest(int wafer, int lay, bool full) const
std::vector< double > cellCoarseX_
std::pair< int, float > getIndex(int lay, bool reco) const
bool tileTrapezoid() const
int scintCells(const int layer) const
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
#define N
Definition: blowfish.cc:9
std::vector< double > cellFineX_
wafer_map typesInLayers_
int32_t waferV(const int32_t index)
std::vector< int > waferCopy_
bool waferHexagon8() const
std::vector< int > waferTypeT_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
int HGCalDDDConstants::maxCellUV ( ) const
inline

Definition at line 102 of file HGCalDDDConstants.h.

References hgpar_, HGCalParameters::nCellsFine_, and tileTrapezoid().

Referenced by HGCalTopology::HGCalTopology().

102 { return (tileTrapezoid() ? hgpar_->nCellsFine_ : 2 * hgpar_->nCellsFine_); }
bool tileTrapezoid() const
const HGCalParameters * hgpar_
int HGCalDDDConstants::maxModules ( ) const
inline

Definition at line 105 of file HGCalDDDConstants.h.

References modHalf_.

105 { return modHalf_; }
int HGCalDDDConstants::maxModulesPerLayer ( ) const
inline

Definition at line 106 of file HGCalDDDConstants.h.

References maxWafersPerLayer_.

106 { return maxWafersPerLayer_; }
int HGCalDDDConstants::maxRows ( int  lay,
bool  reco 
) const

Definition at line 894 of file HGCalDDDConstants.cc.

References HGCalParameters::defineFull_, getIndex(), hgpar_, mps_fire::i, isotrackApplyRegressor::k, HGCalParameters::waferCopy_, waferHexagon6(), waferHexagon8(), waferInLayerTest(), and HGCalParameters::waferUVMaxLayer_.

894  {
895  int kymax(0);
896  const auto& index = getIndex(lay, reco);
897  int i = index.first;
898  if (i < 0)
899  return kymax;
900  if (waferHexagon6()) {
901  for (unsigned int k = 0; k < hgpar_->waferCopy_.size(); ++k) {
902  if (waferInLayerTest(k, i, hgpar_->defineFull_)) {
903  int ky = ((hgpar_->waferCopy_[k]) / 100) % 100;
904  if (ky > kymax)
905  kymax = ky;
906  }
907  }
908  } else if (waferHexagon8()) {
909  kymax = 1 + 2 * hgpar_->waferUVMaxLayer_[index.first];
910  }
911  return kymax;
912 }
bool waferHexagon6() const
bool waferInLayerTest(int wafer, int lay, bool full) const
std::vector< int > waferUVMaxLayer_
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< int > waferCopy_
bool waferHexagon8() const
const HGCalParameters * hgpar_
double HGCalDDDConstants::minSlope ( ) const
inline

Definition at line 108 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::slopeMin_.

Referenced by HGCScintSD::update(), HGCalSD::update(), HFNoseSD::update(), and HGCSD::update().

108 { return hgpar_->slopeMin_[0]; }
std::vector< double > slopeMin_
const HGCalParameters * hgpar_
int HGCalDDDConstants::modifyUV ( int  uv,
int  type1,
int  type2 
) const

Definition at line 914 of file HGCalDDDConstants.cc.

Referenced by HGCalTopology::neighbors().

914  {
915  // Modify u/v for transition of type1 to type2
916  return (((type1 == type2) || (type1 * type2 != 0)) ? uv : ((type1 == 0) ? (2 * uv + 1) / 3 : (3 * uv) / 2));
917 }
int HGCalDDDConstants::modules ( int  lay,
bool  reco 
) const

Definition at line 919 of file HGCalDDDConstants.cc.

References first, getIndex(), and max_modules_layer_.

Referenced by wafers().

919  {
920  if (getIndex(lay, reco).first < 0)
921  return 0;
922  else
923  return max_modules_layer_[(int)reco][lay];
924 }
Simrecovecs max_modules_layer_
std::pair< int, float > getIndex(int lay, bool reco) const
int HGCalDDDConstants::modulesInit ( int  lay,
bool  reco 
) const

Definition at line 926 of file HGCalDDDConstants.cc.

References HGCalParameters::defineFull_, HGCalParameters::firstModule_, getIndex(), hgpar_, isotrackApplyRegressor::k, HGCalParameters::lastModule_, tileTrapezoid(), waferInLayerTest(), and HGCalParameters::waferPosX_.

Referenced by HGCalDDDConstants().

926  {
927  int nmod(0);
928  const auto& index = getIndex(lay, reco);
929  if (index.first < 0)
930  return nmod;
931  if (!tileTrapezoid()) {
932  for (unsigned int k = 0; k < hgpar_->waferPosX_.size(); ++k) {
933  if (waferInLayerTest(k, index.first, hgpar_->defineFull_))
934  ++nmod;
935  }
936  } else {
937  nmod = 1 + hgpar_->lastModule_[index.first] - hgpar_->firstModule_[index.first];
938  }
939  return nmod;
940 }
bool waferInLayerTest(int wafer, int lay, bool full) const
std::vector< int > firstModule_
std::pair< int, float > getIndex(int lay, bool reco) const
bool tileTrapezoid() const
std::vector< int > lastModule_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
double HGCalDDDConstants::mouseBite ( bool  reco) const
int HGCalDDDConstants::numberCells ( bool  reco) const

Definition at line 946 of file HGCalDDDConstants.cc.

References cells, HGCalParameters::depth_, hgpar_, isotrackApplyRegressor::k, HGCalParameters::layer_, dt_dqm_sourceclient_common_cff::reco, HGCalGeomParameters::scintillatorFile, tileCount(), tileTrapezoid(), and HGCalParameters::waferMaskMode_.

Referenced by HGCalTopology::allGeomModules().

946  {
947  int cells =
949  if (cells == 0) {
950  unsigned int nlayer = (reco) ? hgpar_->depth_.size() : hgpar_->layer_.size();
951  for (unsigned k = 0; k < nlayer; ++k) {
952  std::vector<int> ncells = numberCells(((reco) ? hgpar_->depth_[k] : hgpar_->layer_[k]), reco);
953  cells = std::accumulate(ncells.begin(), ncells.end(), cells);
954  }
955  }
956  return cells;
957 }
std::vector< int > layer_
std::vector< int > depth_
static constexpr int scintillatorFile
bool tileTrapezoid() const
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
int numberCells(bool reco) const
int tileCount(int layer, int ring) const
const HGCalParameters * hgpar_
std::vector< int > HGCalDDDConstants::numberCells ( int  lay,
bool  reco 
) const

Definition at line 959 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellFineX_, HGCalParameters::defineFull_, HGCalParameters::firstModule_, getIndex(), HGCSiliconDetId::HGCalFine, hgpar_, mps_fire::i, isotrackApplyRegressor::k, nphi, numberCellsHexagon(), HGCalParameters::scintCells(), tileTrapezoid(), HGCalParameters::waferCopy_, waferHexagon6(), waferInLayerTest(), HGCalParameters::waferTypeT_, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

959  {
960  const auto& index = getIndex(lay, reco);
961  int i = index.first;
962  std::vector<int> ncell;
963  if (i >= 0) {
964  if (waferHexagon6()) {
965  for (unsigned int k = 0; k < hgpar_->waferTypeT_.size(); ++k) {
966  if (waferInLayerTest(k, i, hgpar_->defineFull_)) {
967  unsigned int cell = (hgpar_->waferTypeT_[k] - 1 == HGCSiliconDetId::HGCalFine)
968  ? (hgpar_->cellFineX_.size())
969  : (hgpar_->cellCoarseX_.size());
970  ncell.emplace_back((int)(cell));
971  }
972  }
973  } else if (tileTrapezoid()) {
974  int nphi = hgpar_->scintCells(lay);
975  for (int k = hgpar_->firstModule_[i]; k <= hgpar_->lastModule_[i]; ++k)
976  ncell.emplace_back(nphi);
977  } else {
978  for (unsigned int k = 0; k < hgpar_->waferCopy_.size(); ++k) {
979  if (waferInLayerTest(k, index.first, hgpar_->defineFull_)) {
980  int cell = numberCellsHexagon(lay,
983  true);
984  ncell.emplace_back(cell);
985  }
986  }
987  }
988  }
989  return ncell;
990 }
const int nphi
bool waferHexagon6() const
int32_t waferU(const int32_t index)
bool waferInLayerTest(int wafer, int lay, bool full) const
std::vector< double > cellCoarseX_
std::vector< int > firstModule_
int numberCellsHexagon(int wafer) const
std::pair< int, float > getIndex(int lay, bool reco) const
bool tileTrapezoid() const
int scintCells(const int layer) const
std::vector< double > cellFineX_
int32_t waferV(const int32_t index)
std::vector< int > waferCopy_
std::vector< int > waferTypeT_
const HGCalParameters * hgpar_
int HGCalDDDConstants::numberCellsHexagon ( int  wafer) const

Definition at line 992 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellFineX_, HGCSiliconDetId::HGCalFine, hgpar_, and HGCalParameters::waferTypeT_.

Referenced by HGCalGeometry::newCell(), numberCells(), and HeterogeneousHGCalHEFCellPositionsFiller::set_conditions_().

992  {
993  if (wafer >= 0 && wafer < (int)(hgpar_->waferTypeT_.size())) {
994  if (hgpar_->waferTypeT_[wafer] - 1 == HGCSiliconDetId::HGCalFine)
995  return (int)(hgpar_->cellFineX_.size());
996  else
997  return (int)(hgpar_->cellCoarseX_.size());
998  } else {
999  return 0;
1000  }
1001 }
std::vector< double > cellCoarseX_
std::vector< double > cellFineX_
std::vector< int > waferTypeT_
const HGCalParameters * hgpar_
int HGCalDDDConstants::numberCellsHexagon ( int  lay,
int  waferU,
int  waferV,
bool  flag 
) const

Definition at line 1003 of file HGCalDDDConstants.cc.

References HGCSiliconDetId::HGCalCoarseThick, hgpar_, if(), N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, HGCalParameters::typesInLayers_, HGCalWaferIndex::waferIndex(), and HGCalParameters::waferTypeL_.

1003  {
1005  int type =
1006  ((itr == hgpar_->typesInLayers_.end()) ? HGCSiliconDetId::HGCalCoarseThick : hgpar_->waferTypeL_[itr->second]);
1007  int N = (type == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
1008  if (flag)
1009  return (3 * N * N);
1010  else
1011  return N;
1012 }
int32_t waferU(const int32_t index)
if(conf_.getParameter< bool >("UseStripCablingDB"))
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
#define N
Definition: blowfish.cc:9
wafer_map typesInLayers_
int32_t waferV(const int32_t index)
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
std::pair< double, double > HGCalDDDConstants::rangeR ( double  z,
bool  reco 
) const

Definition at line 1014 of file HGCalDDDConstants.cc.

References funct::abs(), HGCalParameters::detectorType_, HGCalParameters::firstLayer_, HGCalParameters::firstMixedLayer_, hgpar_, HGCalParameters::k_ScaleFromDDD, HGCalParameters::k_ScaleToDDD, HGCalGeomTools::radius(), HGCalParameters::radiusMixBoundary_, HGCalParameters::rMaxFront_, HGCalParameters::rMinFront_, HGCalParameters::slopeMin_, HGCalParameters::slopeTop_, HGCalParameters::zFrontMin_, HGCalParameters::zFrontTop_, and HGCalParameters::zLayerHex_.

Referenced by ticl::SeedingRegionByTracks::buildFirstLayers(), HFNoseNumberingScheme::checkPosition(), HGCalNumberingScheme::checkPosition(), HGCDigitizer::checkPosition(), locateCellTrap(), and HGCalGeometry::neighborZ().

1014  {
1015  double rmin(0), rmax(0), zz(0);
1016  if (hgpar_->detectorType_ > 0) {
1017  zz = (reco ? std::abs(z) : HGCalParameters::k_ScaleFromDDD * std::abs(z));
1018  if (hgpar_->detectorType_ <= 2) {
1020  } else {
1021  rmin = HGCalGeomTools::radius(
1023  }
1024  if ((hgpar_->detectorType_ == 2) && (zz >= hgpar_->zLayerHex_[hgpar_->firstMixedLayer_ - 1])) {
1025  rmax = HGCalGeomTools::radius(
1027  } else {
1029  }
1030  }
1031  if (!reco) {
1034  }
1035 #ifdef EDM_ML_DEBUG
1036  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants:rangeR: " << z << ":" << zz << " R " << rmin << ":" << rmax;
1037 #endif
1038  return std::make_pair(rmin, rmax);
1039 }
Log< level::Info, true > LogVerbatim
std::vector< double > zFrontMin_
static void radius(double zf, double zb, std::vector< double > const &zFront1, std::vector< double > const &rFront1, std::vector< double > const &slope1, std::vector< double > const &zFront2, std::vector< double > const &rFront2, std::vector< double > const &slope2, int flag, std::vector< double > &zz, std::vector< double > &rin, std::vector< double > &rout)
std::vector< double > rMaxFront_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< double > slopeTop_
std::vector< double > zLayerHex_
std::vector< double > slopeMin_
static constexpr double k_ScaleToDDD
std::vector< double > radiusMixBoundary_
std::vector< double > rMinFront_
std::vector< double > zFrontTop_
const HGCalParameters * hgpar_
std::pair< double, double > HGCalDDDConstants::rangeRLayer ( int  lay,
bool  reco 
) const

Definition at line 1041 of file HGCalDDDConstants.cc.

References getIndex(), hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::rMaxLayHex_, and HGCalParameters::rMinLayHex_.

1041  {
1042  double rmin(0), rmax(0);
1043  const auto& index = getIndex(lay, reco);
1044  if (index.first >= 0 && index.first < static_cast<int>(hgpar_->rMinLayHex_.size())) {
1045  rmin = hgpar_->rMinLayHex_[index.first];
1046  rmax = hgpar_->rMaxLayHex_[index.first];
1047  }
1048  if (!reco) {
1051  }
1052 #ifdef EDM_ML_DEBUG
1053  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants:rangeR: " << lay << ":" << index.first << " R " << rmin << ":"
1054  << rmax;
1055 #endif
1056  return std::make_pair(rmin, rmax);
1057 }
Log< level::Info, true > LogVerbatim
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< double > rMinLayHex_
std::vector< double > rMaxLayHex_
static constexpr double k_ScaleToDDD
const HGCalParameters * hgpar_
std::pair< double, double > HGCalDDDConstants::rangeZ ( bool  reco) const

Definition at line 1059 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::waferThick_, and HGCalParameters::zLayerHex_.

Referenced by HFNoseNumberingScheme::checkPosition(), HGCalNumberingScheme::checkPosition(), and HGCDigitizer::checkPosition().

1059  {
1060  double zmin = (hgpar_->zLayerHex_[0] - hgpar_->waferThick_);
1061  double zmax = (hgpar_->zLayerHex_[hgpar_->zLayerHex_.size() - 1] + hgpar_->waferThick_);
1062 #ifdef EDM_ML_DEBUG
1063  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants:rangeZ: " << zmin << ":" << zmax << ":" << hgpar_->waferThick_;
1064 #endif
1065  if (!reco) {
1068  }
1069  return std::make_pair(zmin, zmax);
1070 }
Log< level::Info, true > LogVerbatim
std::vector< double > zLayerHex_
static constexpr double k_ScaleToDDD
const HGCalParameters * hgpar_
std::pair< int, int > HGCalDDDConstants::rowColumnWafer ( const int  wafer) const

Definition at line 1072 of file HGCalDDDConstants.cc.

References cuy::col, filterCSVwithJSON::copy, HGCalTypes::getUnpackedU(), HGCalTypes::getUnpackedV(), hgpar_, and HGCalParameters::waferCopy_.

1072  {
1073  int row(0), col(0);
1074  if (wafer < (int)(hgpar_->waferCopy_.size())) {
1075  int copy = hgpar_->waferCopy_[wafer];
1076  col = HGCalTypes::getUnpackedU(copy);
1077  row = HGCalTypes::getUnpackedV(copy);
1078  ;
1079  }
1080  return std::make_pair(row, col);
1081 }
static int32_t getUnpackedU(int id)
Definition: HGCalTypes.cc:16
static int32_t getUnpackedV(int id)
Definition: HGCalTypes.cc:22
std::vector< int > waferCopy_
int col
Definition: cuy.py:1009
const HGCalParameters * hgpar_
int HGCalDDDConstants::sectors ( ) const
inline
std::pair< int, int > HGCalDDDConstants::simToReco ( int  cell,
int  layer,
int  mod,
bool  half 
) const

Definition at line 1083 of file HGCalDDDConstants.cc.

References HLT_FULL_cff::depth, getIndex(), hgpar_, mps_fire::i, HGCalParameters::layerGroup_, HGCalParameters::layerGroupM_, HGCalParameters::layerGroupO_, mod(), findQualityFiles::size, waferHexagon6(), and HGCalParameters::waferTypeL_.

Referenced by HGCalTimingAnalyzer::analyzeSimHits(), HGCalTBAnalyzer::analyzeSimHits(), CaloParticleDebugger::fillSimHits(), and CaloTruthAccumulator::fillSimHits().

1083  {
1084  if (!waferHexagon6()) {
1085  return std::make_pair(cell, lay);
1086  } else {
1087  const auto& index = getIndex(lay, false);
1088  int i = index.first;
1089  if (i < 0) {
1090  edm::LogWarning("HGCalGeom") << "Wrong Layer # " << lay << " not in the list ***** ERROR *****";
1091  return std::make_pair(-1, -1);
1092  }
1093  if (mod >= (int)(hgpar_->waferTypeL_).size()) {
1094  edm::LogWarning("HGCalGeom") << "Invalid Wafer # " << mod << "should be < " << (hgpar_->waferTypeL_).size()
1095  << " ***** ERROR *****";
1096  return std::make_pair(-1, -1);
1097  }
1098  int depth(-1);
1099  int kx = cell;
1100  int type = hgpar_->waferTypeL_[mod];
1101  if (type == 1) {
1102  depth = hgpar_->layerGroup_[i];
1103  } else if (type == 2) {
1104  depth = hgpar_->layerGroupM_[i];
1105  } else {
1106  depth = hgpar_->layerGroupO_[i];
1107  }
1108  return std::make_pair(kx, depth);
1109  }
1110 }
bool waferHexagon6() const
std::vector< int > layerGroupM_
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< int > layerGroup_
std::vector< int > layerGroupO_
Log< level::Warning, false > LogWarning
const HGCalParameters * hgpar_
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
std::vector< int > waferTypeL_
tuple size
Write out results.
int HGCalDDDConstants::tileCount ( int  layer,
int  ring 
) const

Definition at line 1112 of file HGCalDDDConstants.cc.

References b, HGCalParameters::firstLayer_, hgpar_, isotrackApplyRegressor::k, lastLayer(), HGCalTileIndex::tileIndex(), HGCalParameters::tileInfoMap_, and HGCalParameters::tileRingRange_.

Referenced by numberCells().

1112  {
1113  int laymin(layer), laymax(layer), ringmin(ring), ringmax(ring), kount(0);
1114  if (layer == 0) {
1115  laymin = hgpar_->firstLayer_;
1116  laymax = lastLayer(true);
1117  }
1118  for (int lay = laymin; lay <= laymax; ++lay) {
1119  if (ring < 0) {
1120  int ll = lay - hgpar_->firstLayer_;
1121  ringmin = hgpar_->tileRingRange_[ll].first;
1122  ringmax = hgpar_->tileRingRange_[ll].second;
1123  }
1124  for (int rin = ringmin; rin <= ringmax; ++rin) {
1125  int indx = HGCalTileIndex::tileIndex(lay, rin + 1, 0);
1126  auto itr = hgpar_->tileInfoMap_.find(indx);
1127  if (itr != hgpar_->tileInfoMap_.end()) {
1128  for (int k = 0; k < 4; ++k) {
1129  std::bitset<24> b(itr->second.hex[k]);
1130  kount += b.count();
1131  }
1132  }
1133  }
1134  }
1135  return (3 * kount);
1136 }
int lastLayer(bool reco) const
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t tileIndex(int32_t layer, int32_t ring, int32_t phi)
std::vector< std::pair< int, int > > tileRingRange_
double b
Definition: hdecay.h:118
const HGCalParameters * hgpar_
tileInfo_map tileInfoMap_
bool HGCalDDDConstants::tileExist ( int  zside,
int  layer,
int  ring,
int  phi 
) const
inline

Definition at line 124 of file HGCalDDDConstants.h.

References hgpar_, convertSQLiteXML::ok, HGCalTileIndex::tileExist(), HGCalTileIndex::tileIndex(), and HGCalParameters::tileInfoMap_.

Referenced by HGCalGeometryLoader::build().

124  {
125  int indx = HGCalTileIndex::tileIndex(layer, ring, 0);
126  auto itr = hgpar_->tileInfoMap_.find(indx);
127  bool ok = (itr == hgpar_->tileInfoMap_.end()) ? false : HGCalTileIndex::tileExist(itr->second.hex, zside, phi);
128  return ok;
129  }
int zside(DetId const &)
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t tileIndex(int32_t layer, int32_t ring, int32_t phi)
bool tileExist(const int32_t *hex, int32_t zside, int32_t phi)
const HGCalParameters * hgpar_
tileInfo_map tileInfoMap_
std::pair<int, int> HGCalDDDConstants::tileRings ( int  layer) const
inline

Definition at line 130 of file HGCalDDDConstants.h.

References HGCalParameters::firstLayer_, hgpar_, mode_, HGCalParameters::tileRingRange_, and HGCalGeometryMode::TrapezoidFile.

130  {
132  int ll = layer - hgpar_->firstLayer_;
133  if (ll >= 0 && ll < static_cast<int>(hgpar_->tileRingRange_.size()))
134  return hgpar_->tileRingRange_[ll];
135  }
136  return std::make_pair(0, 0);
137  }
constexpr std::array< uint8_t, layerIndexSize > layer
std::vector< std::pair< int, int > > tileRingRange_
const HGCalGeometryMode::GeometryMode mode_
const HGCalParameters * hgpar_
int HGCalDDDConstants::tileSiPM ( int  sipm) const
inline
bool HGCalDDDConstants::tileTrapezoid ( ) const
inline
std::pair<int, int> HGCalDDDConstants::tileType ( int  layer,
int  ring,
int  phi 
) const
inline

Definition at line 143 of file HGCalDDDConstants.h.

References hgpar_, HGCalTypes::SiPMLarge, HGCalTileIndex::tileIndex(), and HGCalParameters::tileInfoMap_.

Referenced by HGCalGeometryLoader::build(), HGCalTopology::encode(), HGCalNumberingScheme::getUnitID(), and HGCalGeometry::newCell().

143  {
144  int indx = HGCalTileIndex::tileIndex(layer, ring, phi);
145  int type(-1), sipm(-1);
146  auto itr = hgpar_->tileInfoMap_.find(indx);
147  if (itr != hgpar_->tileInfoMap_.end()) {
148  type = 1 + (itr->second).type;
149  sipm = ((itr->second).sipm == HGCalTypes::SiPMLarge) ? 0 : 1;
150  }
151  return std::make_pair(type, sipm);
152  }
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t tileIndex(int32_t layer, int32_t ring, int32_t phi)
const HGCalParameters * hgpar_
tileInfo_map tileInfoMap_
unsigned int HGCalDDDConstants::volumes ( ) const
inline

Definition at line 153 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::moduleLayR_.

Referenced by HGCalGeometryLoader::build().

153 { return hgpar_->moduleLayR_.size(); }
std::vector< int > moduleLayR_
const HGCalParameters * hgpar_
int HGCalDDDConstants::waferCount ( const int  type) const
inline

Definition at line 176 of file HGCalDDDConstants.h.

References waferMax_.

176 { return ((type == 0) ? waferMax_[2] : waferMax_[3]); }
std::array< int, 4 > waferMax_
int HGCalDDDConstants::waferFileIndex ( unsigned int  kk) const
inline

Definition at line 183 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferInfoMap_.

183  {
184  if (kk < hgpar_->waferInfoMap_.size()) {
185  auto itr = hgpar_->waferInfoMap_.begin();
186  std::advance(itr, kk);
187  return itr->first;
188  } else
189  return 0;
190  }
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
std::tuple<int, int, int> HGCalDDDConstants::waferFileInfo ( unsigned int  kk) const
inline

Definition at line 191 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferInfoMap_.

191  {
192  if (kk < hgpar_->waferInfoMap_.size()) {
193  auto itr = hgpar_->waferInfoMap_.begin();
194  std::advance(itr, kk);
195  return std::make_tuple(itr->second.type, itr->second.part, itr->second.orient);
196  } else
197  return std::make_tuple(0, 0, 0);
198  }
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
bool HGCalDDDConstants::waferFileInfoExist ( int  kk) const
inline

Definition at line 206 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferInfoMap_.

206 { return (hgpar_->waferInfoMap_.find(kk) != hgpar_->waferInfoMap_.end()); }
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
std::tuple<int, int, int> HGCalDDDConstants::waferFileInfoFromIndex ( int  kk) const
inline

Definition at line 199 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferInfoMap_.

199  {
200  auto itr = hgpar_->waferInfoMap_.find(kk);
201  if (itr != hgpar_->waferInfoMap_.end()) {
202  return std::make_tuple(itr->second.type, itr->second.part, itr->second.orient);
203  } else
204  return std::make_tuple(0, 0, 0);
205  }
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
unsigned int HGCalDDDConstants::waferFileSize ( ) const
inline

Definition at line 182 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferInfoMap_.

Referenced by waferType(), and waferTypeRotation().

182 { return hgpar_->waferInfoMap_.size(); }
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
int HGCalDDDConstants::waferFromCopy ( int  copy) const

Definition at line 1138 of file HGCalDDDConstants.cc.

References hgpar_, isotrackApplyRegressor::k, mps_fire::result, and HGCalParameters::waferCopy_.

Referenced by HGCNumberingScheme::getUnitID().

1138  {
1139  const int ncopies = hgpar_->waferCopy_.size();
1140  int wafer(ncopies);
1141  bool result(false);
1142  for (int k = 0; k < ncopies; ++k) {
1143  if (copy == hgpar_->waferCopy_[k]) {
1144  wafer = k;
1145  result = true;
1146  break;
1147  }
1148  }
1149  if (!result) {
1150  wafer = -1;
1151 #ifdef EDM_ML_DEBUG
1152  edm::LogVerbatim("HGCalGeom") << "Cannot find " << copy << " in a list of " << ncopies << " members";
1153  for (int k = 0; k < ncopies; ++k)
1154  edm::LogVerbatim("HGCalGeom") << "[" << k << "] " << hgpar_->waferCopy_[k];
1155 #endif
1156  }
1157 #ifdef EDM_ML_DEBUG
1158  edm::LogVerbatim("HGCalGeom") << "WaferFromCopy " << copy << ":" << wafer << ":" << result;
1159 #endif
1160  return wafer;
1161 }
Log< level::Info, true > LogVerbatim
tuple result
Definition: mps_fire.py:311
std::vector< int > waferCopy_
const HGCalParameters * hgpar_
void HGCalDDDConstants::waferFromPosition ( const double  x,
const double  y,
int &  wafer,
int &  icell,
int &  celltyp 
) const

Definition at line 1163 of file HGCalDDDConstants.cc.

References funct::abs(), HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, cellHex(), HGCalParameters::cellSize_, PVValHelper::dx, PVValHelper::dy, hexside_, HGCSiliconDetId::HGCalFine, hgpar_, isotrackApplyRegressor::k, HGCalParameters::k_ScaleFromDDD, rmax_, tan30deg_, HGCalParameters::waferCopy_, HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalParameters::waferTypeT_, x, and y.

Referenced by assignCellHex(), HFNoseNumberingScheme::checkPosition(), HGCalNumberingScheme::checkPosition(), HFNoseNumberingScheme::getUnitID(), HGCNumberingScheme::getUnitID(), and HGCalNumberingScheme::getUnitID().

1163  {
1164  // Input x, y in Geant4 unit and transformed to CMSSW standard
1165  double xx = HGCalParameters::k_ScaleFromDDD * x;
1166  double yy = HGCalParameters::k_ScaleFromDDD * y;
1167  int size_ = static_cast<int>(hgpar_->waferCopy_.size());
1168  wafer = size_;
1169  for (int k = 0; k < size_; ++k) {
1170  double dx = std::abs(xx - hgpar_->waferPosX_[k]);
1171  double dy = std::abs(yy - hgpar_->waferPosY_[k]);
1172  if (dx <= rmax_ && dy <= hexside_) {
1173  if ((dy <= 0.5 * hexside_) || (dx * tan30deg_ <= (hexside_ - dy))) {
1174  wafer = k;
1175  celltyp = hgpar_->waferTypeT_[k];
1176  xx -= hgpar_->waferPosX_[k];
1177  yy -= hgpar_->waferPosY_[k];
1178  break;
1179  }
1180  }
1181  }
1182  if (wafer < size_) {
1183  if (celltyp - 1 == HGCSiliconDetId::HGCalFine)
1184  icell = cellHex(
1186  else
1187  icell = cellHex(xx,
1188  yy,
1191  hgpar_->cellCoarseY_);
1192  } else {
1193  wafer = -1;
1194 #ifdef EDM_ML_DEBUG
1195  edm::LogWarning("HGCalGeom") << "Cannot get wafer type corresponding to " << x << ":" << y << " " << xx << ":"
1196  << yy;
1197 #endif
1198  }
1199 #ifdef EDM_ML_DEBUG
1200  edm::LogVerbatim("HGCalGeom") << "Position " << x << ":" << y << " Wafer " << wafer << ":" << size_ << " XX " << xx
1201  << ":" << yy << " Cell " << icell << " Type " << celltyp;
1202 #endif
1203 }
std::vector< double > waferPosY_
Log< level::Info, true > LogVerbatim
std::vector< double > cellFineY_
int cellHex(double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
std::vector< double > cellCoarseX_
std::vector< double > cellSize_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< double > cellFineX_
static constexpr double k_ScaleFromDDD
std::vector< int > waferCopy_
static constexpr double tan30deg_
std::vector< int > waferTypeT_
std::vector< double > cellCoarseY_
Log< level::Warning, false > LogWarning
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
void HGCalDDDConstants::waferFromPosition ( const double  x,
const double  y,
const int  layer,
int &  waferU,
int &  waferV,
int &  cellU,
int &  cellV,
int &  celltype,
double &  wt,
bool  extend = false,
bool  debug = false 
) const

Definition at line 1205 of file HGCalDDDConstants.cc.

References funct::abs(), cellHex(), HGCalParameters::cellThickness_, debug, PVValHelper::dx, PVValHelper::dy, HGCalParameters::firstLayer_, HGCalWaferType::getType(), getXY(), HGCalGeometryMode::Hexagon8File, HGCalGeometryMode::Hexagon8Module, hexside_, hexsideT_, HGCSiliconDetId::HGCalCoarseThick, hgpar_, isotrackApplyRegressor::k, HGCalParameters::k_ScaleFromDDD, HGCalParameters::layerType_, mode_, HGCalParameters::nCellsFine_, rmax_, rmaxT_, tan30deg_, HGCalParameters::typesInLayers_, HGCalTypes::WaferCenterR, HGCalParameters::waferCopy_, HGCalWaferIndex::waferIndex(), HGCalParameters::waferInfoMap_, HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalParameters::waferThick_, HGCalParameters::waferTypeL_, HGCalWaferIndex::waferU(), HGCalParameters::waferUVMax_, HGCalWaferIndex::waferV(), HGCalParameters::xLayerHex_, xy(), and HGCalParameters::yLayerHex_.

1215  {
1216  waferU = waferV = 1 + hgpar_->waferUVMax_;
1217  cellU = cellV = celltype = 0;
1218  if ((hgpar_->xLayerHex_.empty()) || (hgpar_->yLayerHex_.empty()))
1219  return;
1220  int ll = layer - hgpar_->firstLayer_;
1221  bool rotx = ((!hgpar_->layerType_.empty()) && (hgpar_->layerType_[ll] == HGCalTypes::WaferCenterR));
1222  double xx(0), yy(0);
1223  if (rotx) {
1224  std::pair<double, double> xy =
1226  xx = xy.first - hgpar_->xLayerHex_[ll];
1227  yy = xy.second - hgpar_->yLayerHex_[ll];
1228  } else {
1231  }
1232 #ifdef EDM_ML_DEBUG
1233  if (debug)
1234  edm::LogVerbatim("HGCalGeom") << "waferFromPosition:: Layer " << layer << ":" << ll << " Rot " << rotx << " X " << x
1235  << ":" << xx << " Y " << y << ":" << yy;
1236 #endif
1237  double rmax = extend ? rmaxT_ : rmax_;
1238  double hexside = extend ? hexsideT_ : hexside_;
1239  for (unsigned int k = 0; k < hgpar_->waferPosX_.size(); ++k) {
1240  double dx = std::abs(xx - hgpar_->waferPosX_[k]);
1241  double dy = std::abs(yy - hgpar_->waferPosY_[k]);
1242  if (dx <= rmax && dy <= hexside) {
1243  if ((dy <= 0.5 * hexside) || (dx * tan30deg_ <= (hexside - dy))) {
1248  celltype = HGCalWaferType::getType(index, hgpar_->waferInfoMap_);
1249  } else {
1251  celltype = ((itr == hgpar_->typesInLayers_.end()) ? HGCSiliconDetId::HGCalCoarseThick
1252  : hgpar_->waferTypeL_[itr->second]);
1253  }
1254 #ifdef EDM_ML_DEBUG
1255  if (debug)
1256  edm::LogVerbatim("HGCalGeom") << "WaferFromPosition:: Input " << layer << ":" << ll << ":"
1257  << hgpar_->firstLayer_ << ":" << rotx << ":" << x << ":" << y << ":"
1258  << hgpar_->xLayerHex_[ll] << ":" << hgpar_->yLayerHex_[ll] << ":" << xx << ":"
1259  << yy << " compared with " << hgpar_->waferPosX_[k] << ":"
1260  << hgpar_->waferPosY_[k] << " difference " << dx << ":" << dy << ":"
1261  << dx * tan30deg_ << ":" << (hexside_ - dy) << " comparator " << rmax_ << ":"
1262  << rmaxT_ << ":" << hexside_ << ":" << hexsideT_ << " wafer " << waferU << ":"
1263  << waferV << ":" << celltype;
1264 #endif
1265  xx -= hgpar_->waferPosX_[k];
1266  yy -= hgpar_->waferPosY_[k];
1267  break;
1268  }
1269  }
1270  }
1271  if ((std::abs(waferU) <= hgpar_->waferUVMax_) && (celltype >= 0)) {
1272  cellHex(xx, yy, celltype, cellU, cellV, extend, debug);
1273  wt = (((celltype < 2) && (mode_ != HGCalGeometryMode::Hexagon8Module))
1274  ? (hgpar_->cellThickness_[celltype] / hgpar_->waferThick_)
1275  : 1.0);
1276  } else {
1277  cellU = cellV = 2 * hgpar_->nCellsFine_;
1278  wt = 1.0;
1279  celltype = -1;
1280  }
1281  if ((celltype < 0) && debug) {
1282  double x1(xx);
1283  double y1(yy);
1284  edm::LogVerbatim("HGCalGeom") << "waferfFromPosition: Bad type for X " << x << ":" << x1 << ":" << xx << " Y " << y
1285  << ":" << y1 << ":" << yy << " Wafer " << waferU << ":" << waferV << " Cell " << cellU
1286  << ":" << cellV;
1287  for (unsigned int k = 0; k < hgpar_->waferPosX_.size(); ++k) {
1288  double dx = std::abs(x1 - hgpar_->waferPosX_[k]);
1289  double dy = std::abs(y1 - hgpar_->waferPosY_[k]);
1290  edm::LogVerbatim("HGCalGeom") << "Wafer [" << k << "] Position (" << hgpar_->waferPosX_[k] << ", "
1291  << hgpar_->waferPosY_[k] << ") difference " << dx << ":" << dy << ":"
1292  << dx * tan30deg_ << ":" << hexside - dy << " Paramerers " << rmax << ":"
1293  << hexside;
1294  }
1295  }
1296 }
std::vector< double > waferPosY_
Log< level::Info, true > LogVerbatim
int32_t waferU(const int32_t index)
int cellHex(double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
constexpr std::array< uint8_t, layerIndexSize > layer
int getType(double xpos, double ypos, double zpos)
std::vector< double > yLayerHex_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
std::vector< int > layerType_
std::pair< double, double > getXY(int layer, double x, double y, bool forwd) const
Basic2DVector< T > xy() const
#define debug
Definition: HDRShower.cc:19
std::vector< double > cellThickness_
wafer_map typesInLayers_
const HGCalGeometryMode::GeometryMode mode_
static constexpr double k_ScaleFromDDD
int32_t waferV(const int32_t index)
std::vector< int > waferCopy_
static constexpr double tan30deg_
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::vector< int > waferTypeL_
std::vector< double > xLayerHex_
bool HGCalDDDConstants::waferFullInLayer ( int  wafer,
int  lay,
bool  reco 
) const

Definition at line 1305 of file HGCalDDDConstants.cc.

References getIndex(), and waferInLayerTest().

1305  {
1306  const auto& indx = getIndex(lay, reco);
1307  if (indx.first < 0)
1308  return false;
1309  return waferInLayerTest(wafer, indx.first, false);
1310 }
bool waferInLayerTest(int wafer, int lay, bool full) const
std::pair< int, float > getIndex(int lay, bool reco) const
bool HGCalDDDConstants::waferHexagon6 ( ) const
inline
bool HGCalDDDConstants::waferHexagon8 ( ) const
inline
int32_t HGCalDDDConstants::waferIndex ( int  wafer,
int  index 
) const
private

Definition at line 1716 of file HGCalDDDConstants.cc.

References hgpar_, phase1PixelTopology::layer, layerFromIndex(), HGCalParameters::waferCopy_, HGCalWaferIndex::waferIndex(), HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

Referenced by waferInLayerTest().

1716  {
1717  int layer = layerFromIndex(index, true);
1720  int indx = HGCalWaferIndex::waferIndex(layer, waferU, waferV);
1721 #ifdef EDM_ML_DEBUG
1722  edm::LogVerbatim("HGCalGeom") << "WaferIndex for " << wafer << ":" << index << " (" << layer << ":" << waferU << ":"
1723  << waferV << ") " << indx;
1724 #endif
1725  return indx;
1726 }
Log< level::Info, true > LogVerbatim
int32_t waferU(const int32_t index)
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
int32_t waferV(const int32_t index)
std::vector< int > waferCopy_
const HGCalParameters * hgpar_
int layerFromIndex(int index, bool reco) const
bool HGCalDDDConstants::waferInLayer ( int  wafer,
int  lay,
bool  reco 
) const

Definition at line 1298 of file HGCalDDDConstants.cc.

References HGCalParameters::defineFull_, getIndex(), hgpar_, and waferInLayerTest().

Referenced by HGCalGeometryLoader::build(), HGCalGeometry::getSummary(), and HGCalDDDConstants().

1298  {
1299  const auto& indx = getIndex(lay, reco);
1300  if (indx.first < 0)
1301  return false;
1302  return waferInLayerTest(wafer, indx.first, hgpar_->defineFull_);
1303 }
bool waferInLayerTest(int wafer, int lay, bool full) const
std::pair< int, float > getIndex(int lay, bool reco) const
const HGCalParameters * hgpar_
bool HGCalDDDConstants::waferInLayerTest ( int  wafer,
int  lay,
bool  full 
) const
private

Definition at line 1728 of file HGCalDDDConstants.cc.

References fullAndPart_, hexside_, hgpar_, recoMuon::in, HGCalParameters::k_CornerSize, rmax_, HGCalParameters::rMaxLayHex_, HGCalParameters::rMinLayHex_, HGCalGeomTools::waferCorner(), waferHexagon6(), waferIndex(), HGCalParameters::waferInfoMap_, HGCalWaferIndex::waferLayer(), HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalWaferIndex::waferU(), HGCalWaferIndex::waferV(), HGCalParameters::xLayerHex_, and HGCalParameters::yLayerHex_.

Referenced by maxCells(), maxRows(), modulesInit(), numberCells(), waferFullInLayer(), and waferInLayer().

1728  {
1729  bool in = (waferHexagon6()) ? true : false;
1730  if (!in) {
1731  double xpos = hgpar_->waferPosX_[wafer] + hgpar_->xLayerHex_[lay];
1732  double ypos = hgpar_->waferPosY_[wafer] + hgpar_->yLayerHex_[lay];
1733  std::pair<int, int> corner = HGCalGeomTools::waferCorner(
1734  xpos, ypos, rmax_, hexside_, hgpar_->rMinLayHex_[lay], hgpar_->rMaxLayHex_[lay], in);
1735  in = (full ? (corner.first > 0) : (corner.first == (int)(HGCalParameters::k_CornerSize)));
1736  if (in && fullAndPart_) {
1737  int indx = waferIndex(wafer, lay);
1738  in = (hgpar_->waferInfoMap_.find(indx) != hgpar_->waferInfoMap_.end());
1739 #ifdef EDM_ML_DEBUG
1740  if (!in)
1741  edm::LogVerbatim("HGCalGeom") << "WaferInLayerTest: Layer " << lay << " wafer " << wafer << " index " << indx
1742  << "( " << HGCalWaferIndex::waferLayer(indx) << ", "
1743  << HGCalWaferIndex::waferU(indx) << ", " << HGCalWaferIndex::waferV(indx)
1744  << ") in " << in;
1745 #endif
1746  }
1747 #ifdef EDM_ML_DEBUG
1748  edm::LogVerbatim("HGCalGeom") << "WaferInLayerTest: Layer " << lay << " wafer " << wafer << " R-limits "
1749  << hgpar_->rMinLayHex_[lay] << ":" << hgpar_->rMaxLayHex_[lay] << " Corners "
1750  << corner.first << ":" << corner.second << " In " << in;
1751 #endif
1752  }
1753  return in;
1754 }
std::vector< double > waferPosY_
Log< level::Info, true > LogVerbatim
bool waferHexagon6() const
int32_t waferU(const int32_t index)
int32_t waferLayer(const int32_t index)
int32_t waferIndex(int wafer, int index) const
static constexpr uint32_t k_CornerSize
static std::pair< int32_t, int32_t > waferCorner(double xpos, double ypos, double r, double R, double rMin, double rMax, bool oldBug=false)
std::vector< double > yLayerHex_
Definition: GenABIO.cc:168
std::vector< double > rMinLayHex_
std::vector< double > rMaxLayHex_
int32_t waferV(const int32_t index)
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::vector< double > xLayerHex_
GlobalPoint HGCalDDDConstants::waferLocal2Global ( HepGeom::Point3D< float > &  loc,
const DetId id,
bool  useWafer,
bool  reco,
bool  debug 
) const
inline

Definition at line 210 of file HGCalDDDConstants.h.

References debug, getXY(), HGCSiliconDetId::layer(), dt_dqm_sourceclient_common_cff::reco, waferPositionNoRot(), HGCSiliconDetId::waferU(), HGCSiliconDetId::waferV(), waferZ(), x, xy(), y, and HGCSiliconDetId::zside().

211  {
212  HGCSiliconDetId detid(id);
213  double x(0), y(0);
214  if (useWafer) {
215  auto xyw = waferPositionNoRot(detid.layer(), detid.waferU(), detid.waferV(), reco, debug);
216  x = xyw.first;
217  y = xyw.second;
218  }
219  auto xy = getXY(detid.layer(), (x + loc.x()), (y + loc.y()), false);
220  double zz =
221  (detid.zside() < 0) ? -(loc.z() + waferZ(detid.layer(), reco)) : (loc.z() + waferZ(detid.layer(), reco));
222  double xx = (detid.zside() < 0) ? -xy.first : xy.first;
223  return GlobalPoint(xx, xy.second, zz);
224  }
double waferZ(int layer, bool reco) const
std::pair< double, double > getXY(int layer, double x, double y, bool forwd) const
Basic2DVector< T > xy() const
#define debug
Definition: HDRShower.cc:19
std::pair< double, double > waferPositionNoRot(int lay, int waferU, int waferV, bool reco, bool debug=false) const
int HGCalDDDConstants::waferMax ( ) const
inline

Definition at line 177 of file HGCalDDDConstants.h.

References waferMax_.

Referenced by HeterogeneousHGCalHEFCellPositionsFiller::set_conditions_().

177 { return waferMax_[1]; }
std::array< int, 4 > waferMax_
int HGCalDDDConstants::waferMin ( ) const
inline

Definition at line 178 of file HGCalDDDConstants.h.

References waferMax_.

Referenced by HeterogeneousHGCalHEFCellPositionsFiller::set_conditions_().

178 { return waferMax_[0]; }
std::array< int, 4 > waferMax_
std::pair< double, double > HGCalDDDConstants::waferParameters ( bool  reco) const

Definition at line 1312 of file HGCalDDDConstants.cc.

References hexside_, HGCalParameters::k_ScaleToDDD, and rmax_.

1312  {
1313  if (reco)
1314  return std::make_pair(rmax_, hexside_);
1315  else
1317 }
static constexpr double k_ScaleToDDD
std::pair< double, double > HGCalDDDConstants::waferPosition ( int  wafer,
bool  reco 
) const

Definition at line 1319 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::waferPosX_, and HGCalParameters::waferPosY_.

Referenced by HGCalGeometryLoader::build(), HGCMouseBite::exclude(), and waferPositionNoRot().

1319  {
1320  double xx(0), yy(0);
1321  if (wafer >= 0 && wafer < (int)(hgpar_->waferPosX_.size())) {
1322  xx = hgpar_->waferPosX_[wafer];
1323  yy = hgpar_->waferPosY_[wafer];
1324  }
1325  if (!reco) {
1328  }
1329  return std::make_pair(xx, yy);
1330 }
std::vector< double > waferPosY_
static constexpr double k_ScaleToDDD
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::pair< double, double > HGCalDDDConstants::waferPosition ( int  lay,
int  waferU,
int  waferV,
bool  reco,
bool  debug = false 
) const

Definition at line 1332 of file HGCalDDDConstants.cc.

References HGCalParameters::firstLayer_, getXY(), hgpar_, HGCalParameters::layerType_, HGCalTypes::WaferCenterR, waferPositionNoRot(), HGCalWaferIndex::waferV(), and xy().

1333  {
1334  int ll = lay - hgpar_->firstLayer_;
1335  bool rotx = ((!hgpar_->layerType_.empty()) && (hgpar_->layerType_[ll] == HGCalTypes::WaferCenterR));
1336 #ifdef EDM_ML_DEBUG
1337  if (debug)
1338  edm::LogVerbatim("HGCalGeom") << "Layer " << lay << ":" << ll << " Rotation " << rotx << " U:V " << waferU << ":"
1339  << waferV;
1340 #endif
1341  auto xy = waferPositionNoRot(lay, waferU, waferV, reco, debug);
1342  std::pair<double, double> xy0 = (rotx) ? getXY(lay, xy.first, xy.second, false) : xy;
1343 #ifdef EDM_ML_DEBUG
1344  if (debug)
1345  edm::LogVerbatim("HGCalGeom") << "Without and with rotation " << xy.first << ":" << xy.second << ":" << xy0.first
1346  << ":" << xy0.second;
1347 #endif
1348  return xy0;
1349 }
Log< level::Info, true > LogVerbatim
int32_t waferU(const int32_t index)
std::vector< int > layerType_
std::pair< double, double > getXY(int layer, double x, double y, bool forwd) const
Basic2DVector< T > xy() const
#define debug
Definition: HDRShower.cc:19
int32_t waferV(const int32_t index)
std::pair< double, double > waferPositionNoRot(int lay, int waferU, int waferV, bool reco, bool debug=false) const
const HGCalParameters * hgpar_
std::pair< double, double > HGCalDDDConstants::waferPosition ( int  waferU,
int  waferV,
bool  reco 
) const
private

Definition at line 1780 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::k_ScaleToDDD, HGCalWaferIndex::waferIndex(), HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, and HGCalParameters::wafersInLayers_.

1780  {
1781  double xx(0), yy(0);
1782  int indx = HGCalWaferIndex::waferIndex(0, waferU, waferV);
1783  auto itr = hgpar_->wafersInLayers_.find(indx);
1784  if (itr != hgpar_->wafersInLayers_.end()) {
1785  xx = hgpar_->waferPosX_[itr->second];
1786  yy = hgpar_->waferPosY_[itr->second];
1787  }
1788  if (!reco) {
1791  }
1792  return std::make_pair(xx, yy);
1793 }
std::vector< double > waferPosY_
int32_t waferU(const int32_t index)
wafer_map wafersInLayers_
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
static constexpr double k_ScaleToDDD
int32_t waferV(const int32_t index)
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::pair< double, double > HGCalDDDConstants::waferPositionNoRot ( int  lay,
int  waferU,
int  waferV,
bool  reco,
bool  debug = false 
) const
private

Definition at line 1756 of file HGCalDDDConstants.cc.

References HGCalParameters::firstLayer_, hgpar_, HGCalParameters::k_ScaleToDDD, waferPosition(), HGCalWaferIndex::waferV(), x, HGCalParameters::xLayerHex_, xy(), y, and HGCalParameters::yLayerHex_.

Referenced by isValidCell8(), localToGlobal8(), locateCell(), waferLocal2Global(), and waferPosition().

1757  {
1758  int ll = lay - hgpar_->firstLayer_;
1759  double x = hgpar_->xLayerHex_[ll];
1760  double y = hgpar_->yLayerHex_[ll];
1761 #ifdef EDM_ML_DEBUG
1762  if (debug)
1763  edm::LogVerbatim("HGCalGeom") << "Layer " << lay << ":" << ll << " Shift " << hgpar_->xLayerHex_[ll] << ":"
1764  << hgpar_->yLayerHex_[ll] << " U:V " << waferU << ":" << waferV;
1765 #endif
1766  if (!reco) {
1769  }
1770  const auto& xy = waferPosition(waferU, waferV, reco);
1771  x += xy.first;
1772  y += xy.second;
1773 #ifdef EDM_ML_DEBUG
1774  if (debug)
1775  edm::LogVerbatim("HGCalGeom") << "With wafer " << x << ":" << y << ":" << xy.first << ":" << xy.second;
1776 #endif
1777  return std::make_pair(x, y);
1778 }
Log< level::Info, true > LogVerbatim
int32_t waferU(const int32_t index)
std::vector< double > yLayerHex_
Basic2DVector< T > xy() const
static constexpr double k_ScaleToDDD
#define debug
Definition: HDRShower.cc:19
int32_t waferV(const int32_t index)
std::pair< double, double > waferPosition(int wafer, bool reco) const
const HGCalParameters * hgpar_
std::vector< double > xLayerHex_
int HGCalDDDConstants::wafers ( ) const

Definition at line 1504 of file HGCalDDDConstants.cc.

References HGCalParameters::depth_, hgpar_, mps_fire::i, layers(), HGCalParameters::moduleLayR_, modules(), and tileTrapezoid().

Referenced by HGCalTopology::allGeomModules(), and HGCalDDDConstants().

1504  {
1505  int wafer(0);
1506  if (!tileTrapezoid()) {
1507  for (unsigned int i = 0; i < layers(true); ++i) {
1508  int lay = hgpar_->depth_[i];
1509  wafer += modules(lay, true);
1510  }
1511  } else {
1512  wafer = (int)(hgpar_->moduleLayR_.size());
1513  }
1514  return wafer;
1515 }
std::vector< int > depth_
std::vector< int > moduleLayR_
int modules(int lay, bool reco) const
unsigned int layers(bool reco) const
bool tileTrapezoid() const
const HGCalParameters * hgpar_
int HGCalDDDConstants::wafers ( int  layer,
int  type 
) const

Definition at line 1517 of file HGCalDDDConstants.cc.

References HGCalParameters::firstModule_, getIndex(), hgpar_, HGCalParameters::lastModule_, tileTrapezoid(), and waferLayer_.

1517  {
1518  int wafer(0);
1519  if (!tileTrapezoid()) {
1520  auto itr = waferLayer_.find(layer);
1521  if (itr != waferLayer_.end()) {
1522  unsigned ity = (type > 0 && type <= 2) ? type : 0;
1523  wafer = (itr->second)[ity];
1524  }
1525  } else {
1526  const auto& index = getIndex(layer, true);
1527  wafer = 1 + hgpar_->lastModule_[index.first] - hgpar_->firstModule_[index.first];
1528  }
1529  return wafer;
1530 }
constexpr std::array< uint8_t, layerIndexSize > layer
std::map< int, HGCWaferParam > waferLayer_
std::vector< int > firstModule_
std::pair< int, float > getIndex(int lay, bool reco) const
bool tileTrapezoid() const
std::vector< int > lastModule_
const HGCalParameters * hgpar_
double HGCalDDDConstants::waferSepar ( bool  reco) const
inline
double HGCalDDDConstants::waferSize ( bool  reco) const
inline
int HGCalDDDConstants::waferToCopy ( int  wafer) const
inline

Definition at line 230 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferCopy_.

230  {
231  return ((wafer >= 0) && (wafer < static_cast<int>(hgpar_->waferCopy_.size())))
232  ? hgpar_->waferCopy_[wafer]
233  : static_cast<int>(hgpar_->waferCopy_.size());
234  }
std::vector< int > waferCopy_
const HGCalParameters * hgpar_
int HGCalDDDConstants::waferType ( DetId const &  id,
bool  fromFile = false 
) const

Definition at line 1351 of file HGCalDDDConstants.cc.

References DetId::Forward, hgpar_, HFNoseDetId::layer(), HGCSiliconDetId::layer(), phase1PixelTopology::layer, HFNoseDetId::type(), HGCSiliconDetId::type(), waferFileSize(), waferHexagon6(), waferHexagon8(), HGCalWaferIndex::waferIndex(), HGCalParameters::waferInfoMap_, waferTypeL(), HGCalWaferIndex::waferU(), HFNoseDetId::waferU(), HGCSiliconDetId::waferU(), HGCalWaferIndex::waferV(), HGCSiliconDetId::waferV(), and HFNoseDetId::waferV().

Referenced by hgc_digi_utils::addCellMetadata(), HGCalSimHitValidation::analyzeHits(), assignCellHex(), cellThickness(), HGCalNumberingScheme::getUnitID(), HGCalUncalibRecHitRecWeightsAlgo< HGCDataFrame >::makeRecHit(), and HeterogeneousHGCalHEFCellPositionsFiller::set_conditions_().

1351  {
1352  int type(1);
1353  if (waferHexagon8()) {
1354  if (fromFile && (waferFileSize() > 0)) {
1355  int layer(0), waferU(0), waferV(0);
1356  if (id.det() != DetId::Forward) {
1357  HGCSiliconDetId hid(id);
1358  layer = hid.layer();
1359  waferU = hid.waferU();
1360  waferV = hid.waferV();
1361  } else {
1362  HFNoseDetId hid(id);
1363  layer = hid.layer();
1364  waferU = hid.waferU();
1365  waferV = hid.waferV();
1366  }
1368  if (itr != hgpar_->waferInfoMap_.end())
1369  type = (itr->second).type;
1370  } else {
1371  type = ((id.det() != DetId::Forward) ? HGCSiliconDetId(id).type() : HFNoseDetId(id).type());
1372  }
1373  } else if (waferHexagon6()) {
1374  type = waferTypeL(HGCalDetId(id).wafer()) - 1;
1375  }
1376  return type;
1377 }
bool waferHexagon6() const
int type() const
get the type
Definition: HFNoseDetId.h:50
int32_t waferU(const int32_t index)
unsigned int waferFileSize() const
constexpr std::array< uint8_t, layerIndexSize > layer
int type() const
get the type
int waferTypeL(int wafer) const
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
int32_t waferV(const int32_t index)
bool waferHexagon8() const
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
int HGCalDDDConstants::waferType ( int  layer,
int  waferU,
int  waferV,
bool  fromFile = false 
) const

Definition at line 1379 of file HGCalDDDConstants.cc.

References HGCSiliconDetId::HGCalCoarseThick, hgpar_, HGCalParameters::typesInLayers_, waferFileSize(), waferHexagon6(), waferHexagon8(), HGCalWaferIndex::waferIndex(), HGCalParameters::waferInfoMap_, and HGCalParameters::waferTypeL_.

1379  {
1381  if (waferHexagon8()) {
1382  if (fromFile && (waferFileSize() > 0)) {
1384  if (itr != hgpar_->waferInfoMap_.end())
1385  type = (itr->second).type;
1386  } else {
1388  if (itr != hgpar_->typesInLayers_.end())
1389  type = hgpar_->waferTypeL_[itr->second];
1390  }
1391  } else if (waferHexagon6()) {
1392  if ((waferU >= 0) && (waferU < (int)(hgpar_->waferTypeL_.size())))
1393  type = (hgpar_->waferTypeL_[waferU] - 1);
1394  }
1395  return type;
1396 }
bool waferHexagon6() const
int32_t waferU(const int32_t index)
unsigned int waferFileSize() const
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
wafer_map typesInLayers_
int32_t waferV(const int32_t index)
bool waferHexagon8() const
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
std::tuple< int, int, int > HGCalDDDConstants::waferType ( HGCSiliconDetId const &  id,
bool  fromFile = false 
) const

Definition at line 1398 of file HGCalDDDConstants.cc.

References first, hgpar_, HGCalGeomTools::k_allCorners, HGCalGeomTools::k_fiveCorners, HGCalGeomTools::k_fourCorners, HGCalWaferMask::k_OffsetRotation, HGCalGeomTools::k_threeCorners, phase1PixelTopology::layer, edm::second(), HGCalParameters::typesInLayers_, waferFileSize(), HGCalTypes::WaferFive, HGCalTypes::WaferFull, HGCalTypes::WaferHalf, HGCalWaferIndex::waferIndex(), HGCalParameters::waferInfoMap_, HGCalTypes::WaferThree, HGCalParameters::waferTypeL_, HGCalParameters::waferTypes_, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

1398  {
1399  const auto& index = HGCalWaferIndex::waferIndex(id.layer(), id.waferU(), id.waferV());
1400  int type(-1), part(-1), orient(-1);
1401  if (fromFile && (waferFileSize() > 0)) {
1402  auto itr = hgpar_->waferInfoMap_.find(index);
1403  if (itr != hgpar_->waferInfoMap_.end()) {
1404  type = (itr->second).type;
1405  part = (itr->second).part;
1406  orient = (itr->second).orient;
1407  }
1408  } else {
1409  auto ktr = hgpar_->typesInLayers_.find(index);
1410  if (ktr != hgpar_->typesInLayers_.end())
1411  type = hgpar_->waferTypeL_[ktr->second];
1412  auto itr = hgpar_->waferTypes_.find(index);
1413  if (itr != hgpar_->waferTypes_.end()) {
1414  if ((itr->second).second < HGCalWaferMask::k_OffsetRotation) {
1415  orient = (itr->second).second;
1416  if ((itr->second).first == HGCalGeomTools::k_allCorners) {
1418  } else if ((itr->second).first == HGCalGeomTools::k_fiveCorners) {
1420  } else if ((itr->second).first == HGCalGeomTools::k_fourCorners) {
1422  } else if ((itr->second).first == HGCalGeomTools::k_threeCorners) {
1424  }
1425  } else {
1426  part = (itr->second).first;
1427  orient = ((itr->second).second - HGCalWaferMask::k_OffsetRotation);
1428  }
1429  } else {
1431  orient = 0;
1432  }
1433  }
1434  return std::make_tuple(type, part, orient);
1435 }
static constexpr int k_fourCorners
int32_t waferU(const int32_t index)
unsigned int waferFileSize() const
constexpr std::array< uint8_t, layerIndexSize > layer
U second(std::pair< T, U > const &p)
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
static constexpr int k_fiveCorners
part
Definition: HCALResponse.h:20
wafer_map typesInLayers_
static constexpr int k_OffsetRotation
static constexpr int k_threeCorners
int32_t waferV(const int32_t index)
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
static constexpr int k_allCorners
std::vector< int > waferTypeL_
int HGCalDDDConstants::waferTypeL ( int  wafer) const
inline

Definition at line 240 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferTypeL_.

Referenced by HGCalTBAnalyzer::analyzeRecHits(), PFRecHitQTestThresholdInThicknessNormalizedMIPs::test(), and waferType().

240  {
241  return ((wafer >= 0) && (wafer < static_cast<int>(hgpar_->waferTypeL_.size()))) ? hgpar_->waferTypeL_[wafer] : 0;
242  }
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
std::pair< int, int > HGCalDDDConstants::waferTypeRotation ( int  layer,
int  waferU,
int  waferV,
bool  fromFile = false,
bool  debug = false 
) const

Definition at line 1437 of file HGCalDDDConstants.cc.

References TauDecayModes::dec, first, hgpar_, HGCalGeomTools::k_allCorners, HGCalGeomTools::k_fiveCorners, HGCalGeomTools::k_fourCorners, HGCalWaferMask::k_OffsetRotation, HGCalGeomTools::k_threeCorners, edm::second(), HGCalTypes::WaferCorner0, waferFileSize(), HGCalTypes::WaferFive, HGCalTypes::WaferFull, HGCalTypes::WaferHalf, waferHexagon8(), HGCalWaferIndex::waferIndex(), HGCalParameters::waferInfoMap_, HGCalTypes::WaferOut, HGCalTypes::WaferThree, and HGCalParameters::waferTypes_.

Referenced by isValidCell8().

1438  {
1439  int type(HGCalTypes::WaferOut), rotn(0);
1441  bool withinList(true);
1442  if (fromFile && (waferFileSize() > 0)) {
1443  auto itr = hgpar_->waferInfoMap_.find(wl);
1444  withinList = (itr != hgpar_->waferInfoMap_.end());
1445  if (withinList) {
1446  type = (itr->second).part;
1447  rotn = (itr->second).orient;
1448  }
1449  } else {
1450  auto itr = hgpar_->waferTypes_.find(wl);
1451  if (waferHexagon8()) {
1452  withinList = (itr != hgpar_->waferTypes_.end());
1453  if (withinList) {
1454  if ((itr->second).second < HGCalWaferMask::k_OffsetRotation) {
1455  rotn = (itr->second).second;
1456  if ((itr->second).first == HGCalGeomTools::k_allCorners) {
1458  } else if ((itr->second).first == HGCalGeomTools::k_fiveCorners) {
1460  } else if ((itr->second).first == HGCalGeomTools::k_fourCorners) {
1462  } else if ((itr->second).first == HGCalGeomTools::k_threeCorners) {
1464  }
1465  } else {
1466  type = (itr->second).first;
1467  rotn = ((itr->second).second - HGCalWaferMask::k_OffsetRotation);
1468  }
1469  } else {
1471  rotn = HGCalTypes::WaferCorner0;
1472  }
1473  }
1474  }
1475 #ifdef EDM_ML_DEBUG
1476  if (debug)
1477  edm::LogVerbatim("HGCalGeom") << "waferTypeRotation: Layer " << layer << " Wafer " << waferU << ":" << waferV
1478  << " Index " << std::hex << wl << std::dec << ":" << withinList << " Type " << type
1479  << " Rotation " << rotn;
1480 #endif
1481  return std::make_pair(type, rotn);
1482 }
Log< level::Info, true > LogVerbatim
static constexpr int k_fourCorners
int32_t waferU(const int32_t index)
unsigned int waferFileSize() const
constexpr std::array< uint8_t, layerIndexSize > layer
U second(std::pair< T, U > const &p)
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
#define debug
Definition: HDRShower.cc:19
static constexpr int k_fiveCorners
part
Definition: HCALResponse.h:20
static constexpr int k_OffsetRotation
static constexpr int k_threeCorners
int32_t waferV(const int32_t index)
bool waferHexagon8() const
waferInfo_map waferInfoMap_
const HGCalParameters * hgpar_
static constexpr int k_allCorners
int HGCalDDDConstants::waferTypeT ( int  wafer) const
inline

Definition at line 236 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferTypeT_.

Referenced by HGCalGeometryLoader::build(), HGCalGeometry::getClosestCell(), and hgcal::RecHitTools::isHalfCell().

236  {
237  return ((wafer >= 0) && (wafer < static_cast<int>(hgpar_->waferTypeT_.size()))) ? hgpar_->waferTypeT_[wafer] : 0;
238  }
std::vector< int > waferTypeT_
const HGCalParameters * hgpar_
int HGCalDDDConstants::waferUVMax ( ) const
inline

Definition at line 248 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferUVMax_.

Referenced by HGCalTopology::HGCalTopology().

248 { return hgpar_->waferUVMax_; }
const HGCalParameters * hgpar_
bool HGCalDDDConstants::waferVirtual ( int  layer,
int  waferU,
int  waferV 
) const

Definition at line 1484 of file HGCalDDDConstants.cc.

References hgpar_, waferHexagon6(), waferHexagon8(), HGCalWaferIndex::waferIndex(), and HGCalParameters::waferTypes_.

1484  {
1485  bool type(false);
1486  if (waferHexagon8()) {
1487  int wl = HGCalWaferIndex::waferIndex(layer, waferU, waferV, false);
1488  type = (hgpar_->waferTypes_.find(wl) != hgpar_->waferTypes_.end());
1489  } else if (waferHexagon6()) {
1490  int wl = HGCalWaferIndex::waferIndex(layer, waferU, 0, true);
1491  type = (hgpar_->waferTypes_.find(wl) != hgpar_->waferTypes_.end());
1492  }
1493  return type;
1494 }
bool waferHexagon6() const
int32_t waferU(const int32_t index)
constexpr std::array< uint8_t, layerIndexSize > layer
int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
int32_t waferV(const int32_t index)
bool waferHexagon8() const
const HGCalParameters * hgpar_
double HGCalDDDConstants::waferZ ( int  layer,
bool  reco 
) const

Definition at line 1496 of file HGCalDDDConstants.cc.

References getIndex(), hgpar_, HGCalParameters::k_ScaleToDDD, and HGCalParameters::zLayerHex_.

Referenced by HGCalSimHitValidation::analyzeHits(), HGCalTBAnalyzer::analyzeRecHits(), HGCalTBAnalyzer::analyzeSimHits(), ticl::SeedingRegionByTracks::buildFirstLayers(), HFNoseNumberingScheme::checkPosition(), HGCalNumberingScheme::checkPosition(), HGCalGeometry::get8Corners(), HGCalGeometry::getCorners(), HGCalTriggerTools::getLayerZ(), HGCalGeometry::getNewCorners(), HGCalGeometry::getPosition(), hgcal::RecHitTools::getPositionLayer(), HGCalGeometry::neighborZ(), HeterogeneousHGCalHEFCellPositionsFiller::set_conditions_(), and waferLocal2Global().

1496  {
1497  const auto& index = getIndex(lay, reco);
1498  if (index.first < 0)
1499  return 0;
1500  else
1502 }
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< double > zLayerHex_
static constexpr double k_ScaleToDDD
const HGCalParameters * hgpar_

Member Data Documentation

const float HGCalDDDConstants::dPhiMin = 0.02
private

Definition at line 271 of file HGCalDDDConstants.h.

const bool HGCalDDDConstants::fullAndPart_
private

Definition at line 278 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), isValidHex8(), and waferInLayerTest().

HGCalGeomTools HGCalDDDConstants::geomTools_
private

Definition at line 269 of file HGCalDDDConstants.h.

Referenced by locateCell().

double HGCalDDDConstants::hexside_
private
double HGCalDDDConstants::hexsideT_
private

Definition at line 280 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and waferFromPosition().

const HGCalParameters* HGCalDDDConstants::hgpar_
private
const double HGCalDDDConstants::k_horizontalShift = 1.0
private

Definition at line 270 of file HGCalDDDConstants.h.

Simrecovecs HGCalDDDConstants::max_modules_layer_
private

Definition at line 283 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and modules().

int32_t HGCalDDDConstants::maxWafersPerLayer_
private

Definition at line 284 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and maxModulesPerLayer().

const HGCalGeometryMode::GeometryMode HGCalDDDConstants::mode_
private
int32_t HGCalDDDConstants::modHalf_
private

Definition at line 281 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and maxModules().

double HGCalDDDConstants::rmax_
private
double HGCalDDDConstants::rmaxT_
private

Definition at line 280 of file HGCalDDDConstants.h.

Referenced by cellHex(), HGCalDDDConstants(), and waferFromPosition().

const double HGCalDDDConstants::sqrt3_
private

Definition at line 276 of file HGCalDDDConstants.h.

Referenced by cellHex(), distFromEdgeHex(), and locateCell().

constexpr double HGCalDDDConstants::tan30deg_ = 0.5773502693
staticprivate
std::array<uint32_t, 2> HGCalDDDConstants::tot_layers_
private

Definition at line 282 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), lastLayer(), and layers().

int32_t HGCalDDDConstants::tot_wafers_
private

Definition at line 281 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants().

std::unordered_map<int32_t, bool> HGCalDDDConstants::waferIn_
private

Definition at line 287 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and isValidHex8().

std::map<int, HGCWaferParam> HGCalDDDConstants::waferLayer_
private

Definition at line 285 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and wafers().

std::array<int, 4> HGCalDDDConstants::waferMax_
private

Definition at line 286 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), waferCount(), waferMax(), and waferMin().