CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Static Private Attributes
HGCalDDDConstants Class Reference

#include <HGCalDDDConstants.h>

Public Types

enum  CellType {
  CellType::UndefinedType = -1, CellType::CentralType = 0, CellType::BottomLeftEdge = 1, CellType::LeftEdge = 2,
  CellType::TopLeftEdge = 3, CellType::TopRightEdge = 4, CellType::RightEdge = 5, CellType::BottomRightEdge = 6,
  CellType::BottomCorner = 11, CellType::BottomLeftCorner = 12, CellType::TopLeftCorner = 13, CellType::TopCorner = 14,
  CellType::TopRightCorner = 15, CellType::BottomRightCorner = 16
}
 

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) 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
 
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
 
HGCalParameters::hgtrap getModule (unsigned int k, bool hexType, bool reco) const
 
std::vector< HGCalParameters::hgtrapgetModules () 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::hgtrformgetTrForms () const
 
int getTypeHex (int layer, int waferU, int waferV) const
 
int getTypeTrap (int layer) const
 
int getUVMax (int type) 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 modU, int modV, int cellU, int cellV) 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 > 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 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 > 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
 
unsigned int volumes () const
 
int waferCount (const int type) 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 debug=false) const
 
bool waferFullInLayer (int wafer, int lay, bool reco) const
 
bool waferInLayer (int wafer, int lay, bool reco) const
 
int waferMax () const
 
int waferMin () 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) const
 
int waferType (int layer, int waferU, int waferV) const
 
int waferTypeL (int wafer) 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 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
 
bool waferInLayerTest (int wafer, int lay, bool full) const
 
std::pair< double, double > waferPosition (int waferU, int waferV, bool reco) const
 

Private Attributes

const float dPhiMin = 0.02
 
double hexside_
 
const HGCalParametershgpar_
 
const double k_horizontalShift = 1.0
 
Simrecovecs max_modules_layer_
 
int32_t maxWafersPerLayer_
 
HGCalGeometryMode::GeometryMode mode_
 
int32_t modHalf_
 
double rmax_
 
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 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 23 of file HGCalDDDConstants.h.

Member Typedef Documentation

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

Definition at line 183 of file HGCalDDDConstants.h.

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

Definition at line 182 of file HGCalDDDConstants.h.

Member Enumeration Documentation

Enumerator
UndefinedType 
CentralType 
BottomLeftEdge 
LeftEdge 
TopLeftEdge 
TopRightEdge 
RightEdge 
BottomRightEdge 
BottomCorner 
BottomLeftCorner 
TopLeftCorner 
TopCorner 
TopRightCorner 
BottomRightCorner 

Definition at line 28 of file HGCalDDDConstants.h.

28  {
29  UndefinedType = -1,
30  CentralType = 0,
31  BottomLeftEdge = 1,
32  LeftEdge = 2,
33  TopLeftEdge = 3,
34  TopRightEdge = 4,
35  RightEdge = 5,
36  BottomRightEdge = 6,
37  BottomCorner = 11,
38  BottomLeftCorner = 12,
39  TopLeftCorner = 13,
40  TopCorner = 14,
41  TopRightCorner = 15,
42  BottomRightCorner = 16
43  };

Constructor & Destructor Documentation

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

Definition at line 22 of file HGCalDDDConstants.cc.

References HGCalParameters::cellSize_, funct::cos(), getIndex(), getTrForm(), getTrFormN(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, hexside_, hgpar_, mps_fire::i, HGCalParameters::k_ScaleFromDDD, HGCalParameters::hgtrform::lay, layers(), layersInit(), SiStripPI::max, max_modules_layer_, maxCells(), maxWafersPerLayer_, HGCalParameters::mode_, mode_, modHalf_, modulesInit(), rmax_, sectors(), tan30deg_, tot_layers_, tot_wafers_, HGCalParameters::waferCopy_, waferIn_, HGCalWaferIndex::waferIndex(), waferInLayer(), waferLayer_, waferMax_, HGCalParameters::waferR_, wafers(), HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

23  : hgpar_(hp), sqrt3_(std::sqrt(3.0)) {
24  mode_ = hgpar_->mode_;
28  hexside_ = 2.0 * rmax_ * tan30deg_;
29 #ifdef EDM_ML_DEBUG
30  edm::LogVerbatim("HGCalGeom") << "rmax_ " << rmax_ << ":" << hexside_ << " CellSize "
33 #endif
34  }
35  // init maps and constants
36  modHalf_ = 0;
38  for (int simreco = 0; simreco < 2; ++simreco) {
39  tot_layers_[simreco] = layersInit((bool)simreco);
40  max_modules_layer_[simreco].resize(tot_layers_[simreco] + 1);
41  for (unsigned int layer = 1; layer <= tot_layers_[simreco]; ++layer) {
42  max_modules_layer_[simreco][layer] = modulesInit(layer, (bool)simreco);
43  if (simreco == 1) {
44  modHalf_ += max_modules_layer_[simreco][layer];
46 #ifdef EDM_ML_DEBUG
47  edm::LogVerbatim("HGCalGeom") << "Layer " << layer << " with " << max_modules_layer_[simreco][layer] << ":"
48  << modHalf_ << " modules";
49 #endif
50  }
51  }
52  }
53  tot_wafers_ = wafers();
54 
55 #ifdef EDM_ML_DEBUG
56  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants initialized for " << name << " with " << layers(false) << ":"
57  << layers(true) << " layers, " << wafers() << ":" << 2 * modHalf_
58  << " wafers with maximum " << maxWafersPerLayer_ << " per layer and "
59  << "maximum of " << maxCells(false) << ":" << maxCells(true) << " cells";
60 #endif
63  int wminT(9999999), wmaxT(-9999999), kount1(0), kount2(0);
64  for (unsigned int i = 0; i < getTrFormN(); ++i) {
65  int lay0 = getTrForm(i).lay;
66  int wmin(9999999), wmax(-9999999), kount(0);
67  for (int wafer = 0; wafer < sectors(); ++wafer) {
68  bool waferIn = waferInLayer(wafer, lay0, true);
70  int kndx = HGCalWaferIndex::waferIndex(lay0,
73  waferIn_[kndx] = waferIn;
74  }
75  if (waferIn) {
77  ? wafer
79  if (waferU < wmin)
80  wmin = waferU;
81  if (waferU > wmax)
82  wmax = waferU;
83  ++kount;
84  }
85  }
86  if (wminT > wmin)
87  wminT = wmin;
88  if (wmaxT < wmax)
89  wmaxT = wmax;
90  if (kount1 < kount)
91  kount1 = kount;
92  kount2 += kount;
93 #ifdef EDM_ML_DEBUG
94  int lay1 = getIndex(lay0, true).first;
95  edm::LogVerbatim("HGCalGeom") << "Index " << i << " Layer " << lay0 << ":" << lay1 << " Wafer " << wmin << ":"
96  << wmax << ":" << kount;
97 #endif
98  HGCWaferParam a1{{wmin, wmax, kount}};
99  waferLayer_[lay0] = a1;
100  }
101  waferMax_ = std::array<int, 4>{{wminT, wmaxT, kount1, kount2}};
102 #ifdef EDM_ML_DEBUG
103  edm::LogVerbatim("HGCalGeom") << "Overall wafer statistics: " << wminT << ":" << wmaxT << ":" << kount1 << ":"
104  << kount2;
105 #endif
106  }
107 }
HGCalParameters::hgtrform getTrForm(unsigned int k) const
Simrecovecs max_modules_layer_
unsigned int layersInit(bool reco) const
static int32_t waferV(const int32_t index)
std::unordered_map< int32_t, bool > waferIn_
int modulesInit(int lay, bool reco) const
HGCalGeometryMode::GeometryMode mode_
HGCalGeometryMode::GeometryMode mode_
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
static double k_ScaleFromDDD
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
static int32_t waferU(const int32_t index)
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
std::array< int, 4 > waferMax_
std::array< int, 3 > HGCWaferParam
std::vector< int > waferCopy_
std::array< uint32_t, 2 > tot_layers_
const HGCalParameters * hgpar_
int maxCells(bool reco) const
static double tan30deg_
bool waferInLayer(int wafer, int lay, bool reco) const
HGCalDDDConstants::~HGCalDDDConstants ( )

Definition at line 109 of file HGCalDDDConstants.cc.

109 {}

Member Function Documentation

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

Definition at line 111 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, cellHex(), HGCalParameters::cellSize_, getIndex(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, hgpar_, HGCalParameters::k_ScaleFromDDD, mode_, dt_dqm_sourceclient_common_cff::reco, rmax_, findQualityFiles::size, HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalParameters::waferTypeT_, geometryCSVtoXML::xx, and geometryCSVtoXML::yy.

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

111  {
112  const auto& index = getIndex(lay, reco);
113  if (index.first < 0)
114  return std::make_pair(-1, -1);
116  float xx = (reco) ? x : HGCalParameters::k_ScaleFromDDD * x;
117  float yy = (reco) ? y : HGCalParameters::k_ScaleFromDDD * y;
118 
119  // First the wafer
120  int wafer = cellHex(xx, yy, rmax_, hgpar_->waferPosX_, hgpar_->waferPosY_);
121  if (wafer < 0 || wafer >= (int)(hgpar_->waferTypeT_.size())) {
122  edm::LogWarning("HGCalGeom") << "Wafer no. out of bound for " << wafer << ":" << (hgpar_->waferTypeT_).size()
123  << ":" << (hgpar_->waferPosX_).size() << ":" << (hgpar_->waferPosY_).size()
124  << " ***** ERROR *****";
125  return std::make_pair(-1, -1);
126  } else {
127  // Now the cell
128  xx -= hgpar_->waferPosX_[wafer];
129  yy -= hgpar_->waferPosY_[wafer];
130  if (hgpar_->waferTypeT_[wafer] == 1)
131  return std::make_pair(wafer,
132  cellHex(xx,
133  yy,
136  hgpar_->cellFineY_));
137  else
138  return std::make_pair(wafer,
139  cellHex(xx,
140  yy,
143  hgpar_->cellCoarseY_));
144  }
145  } else {
146  return std::make_pair(-1, -1);
147  }
148 }
size
Write out results.
std::vector< double > waferPosY_
std::vector< double > cellFineY_
HGCalGeometryMode::GeometryMode mode_
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
static double k_ScaleFromDDD
std::vector< double > cellFineX_
fixed size matrix
std::vector< int > waferTypeT_
std::vector< double > cellCoarseY_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::array< int, 5 > HGCalDDDConstants::assignCellHex ( float  x,
float  y,
int  lay,
bool  reco 
) const

Definition at line 150 of file HGCalDDDConstants.cc.

References HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalParameters::k_ScaleToDDD, mode_, dt_dqm_sourceclient_common_cff::reco, waferFromPosition(), waferType(), geometryCSVtoXML::xx, and geometryCSVtoXML::yy.

Referenced by HGCalGeometry::getClosestCell().

150  {
151  int waferU(0), waferV(0), waferType(-1), cellU(0), cellV(0);
153  double xx = (reco) ? HGCalParameters::k_ScaleToDDD * x : x;
154  double yy = (reco) ? HGCalParameters::k_ScaleToDDD * y : y;
155  double wt(1.0);
156  waferFromPosition(xx, yy, lay, waferU, waferV, cellU, cellV, waferType, wt);
157  }
158  return std::array<int, 5>{{waferU, waferV, waferType, cellU, cellV}};
159 }
void waferFromPosition(const double x, const double y, int &wafer, int &icell, int &celltyp) const
HGCalGeometryMode::GeometryMode mode_
int waferType(DetId const &id) const
static double k_ScaleToDDD
std::array< int, 3 > HGCalDDDConstants::assignCellTrap ( float  x,
float  y,
float  z,
int  lay,
bool  reco 
) const

Definition at line 161 of file HGCalDDDConstants.cc.

References getIndex(), hgpar_, createfilelist::int, LEDCalibrationChannels::iphi, HGCalParameters::iradMaxBH_, HGCalParameters::iradMinBH_, HGCalParameters::k_ScaleFromDDD, M_PI, phi, alignCSCRings::r, HGCalParameters::radiusLayer_, HGCalParameters::scintType(), mathSSE::sqrt(), and geometryCSVtoXML::xx.

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

161  {
162  int irad(-1), iphi(-1), type(-1);
163  const auto& indx = getIndex(layer, reco);
164  if (indx.first < 0)
165  return std::array<int, 3>{{irad, iphi, type}};
166  double xx = (z > 0) ? x : -x;
167  double r = (reco ? std::sqrt(x * x + y * y) : HGCalParameters::k_ScaleFromDDD * std::sqrt(x * x + y * y));
168  double phi = (r == 0. ? 0. : std::atan2(y, xx));
169  if (phi < 0)
170  phi += (2.0 * M_PI);
171  type = hgpar_->scintType(layer);
172  auto ir = std::lower_bound(hgpar_->radiusLayer_[type].begin(), hgpar_->radiusLayer_[type].end(), r);
173  irad = (int)(ir - hgpar_->radiusLayer_[type].begin());
174  irad = std::clamp(irad, hgpar_->iradMinBH_[indx.first], hgpar_->iradMaxBH_[indx.first]);
175  iphi = 1 + (int)(phi / indx.second);
176 #ifdef EDM_ML_DEBUG
177  edm::LogVerbatim("HGCalGeom") << "assignCellTrap Input " << x << ":" << y << ":" << z << ":" << layer << ":" << reco
178  << " x|r " << xx << ":" << r << " phi " << phi << " o/p " << irad << ":" << iphi << ":"
179  << type;
180 #endif
181  return std::array<int, 3>{{irad, iphi, type}};
182 }
std::vector< int > iradMaxBH_
type
Definition: HCALResponse.h:21
int scintType(const int layer) const
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_
fixed size matrix
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
std::pair< double, double > HGCalDDDConstants::cellEtaPhiTrap ( int  type,
int  irad 
) const

Definition at line 184 of file HGCalDDDConstants.cc.

References HGCalParameters::cellSize_, flavorHistoryFilter_cfi::dr, hgpar_, mode_, alignCSCRings::r, HGCalParameters::radiusLayer_, and HGCalGeometryMode::Trapezoid.

184  {
185  double dr(0), df(0);
187  double r = 0.5 * ((hgpar_->radiusLayer_[type][irad - 1] + hgpar_->radiusLayer_[type][irad]));
188  dr = (hgpar_->radiusLayer_[type][irad] - hgpar_->radiusLayer_[type][irad - 1]);
189  df = r * hgpar_->cellSize_[type];
190  }
191  return std::make_pair(dr, df);
192 }
type
Definition: HCALResponse.h:21
HGCalGeometryMode::GeometryMode mode_
std::vector< double > cellSize_
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 1296 of file HGCalDDDConstants.cc.

References funct::abs(), PVValHelper::dx, PVValHelper::dy, dqmdumpme::k, EgammaValidation_cff::num, tan30deg_, and TrackerOfflineValidation_Dqm_cff::xmax.

Referenced by assignCell(), waferFromPosition(), and waferUVMax().

1297  {
1298  int num(0);
1299  const double tol(0.00001);
1300  double cellY = 2.0 * cellR * tan30deg_;
1301  for (unsigned int k = 0; k < posX.size(); ++k) {
1302  double dx = std::abs(xx - posX[k]);
1303  double dy = std::abs(yy - posY[k]);
1304  if (dx <= (cellR + tol) && dy <= (cellY + tol)) {
1305  double xmax = (dy <= 0.5 * cellY) ? cellR : (cellR - (dy - 0.5 * cellY) / tan30deg_);
1306  if (dx <= (xmax + tol)) {
1307  num = k;
1308  break;
1309  }
1310  }
1311  }
1312  return num;
1313 }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static double tan30deg_
void HGCalDDDConstants::cellHex ( double  xloc,
double  yloc,
int  cellType,
int &  cellU,
int &  cellV,
bool  debug = false 
) const
private

Definition at line 1315 of file HGCalDDDConstants.cc.

References funct::abs(), newFWLiteAna::found, hgpar_, testProducerWithPsetDescEmpty_cfi::i1, testProducerWithPsetDescEmpty_cfi::i2, SiStripPI::max, min(), N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, rmax_, edm::shift, sqrt3_, and V0Monitor_cff::v0.

1315  {
1316  int N = (cellType == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
1317  double Rc = 2 * rmax_ / (3 * N);
1318  double rc = 0.5 * Rc * sqrt3_;
1319  double v0 = ((xloc / Rc - 1.0) / 1.5);
1320  int cv0 = (v0 > 0) ? (N + (int)(v0 + 0.5)) : (N - (int)(-v0 + 0.5));
1321  double u0 = (0.5 * yloc / rc + 0.5 * cv0);
1322  int cu0 = (u0 > 0) ? (N / 2 + (int)(u0 + 0.5)) : (N / 2 - (int)(-u0 + 0.5));
1323  cu0 = std::max(0, std::min(cu0, 2 * N - 1));
1324  cv0 = std::max(0, std::min(cv0, 2 * N - 1));
1325  if (cv0 - cu0 >= N)
1326  cv0 = cu0 + N - 1;
1327  if (debug)
1328  edm::LogVerbatim("HGCalGeom") << "cellHex: input " << xloc << ":" << yloc << ":" << cellType << " parameter " << rc
1329  << ":" << Rc << " u0 " << u0 << ":" << cu0 << " v0 " << v0 << ":" << cv0;
1330  bool found(false);
1331  static const int shift[3] = {0, 1, -1};
1332  for (int i1 = 0; i1 < 3; ++i1) {
1333  cellU = cu0 + shift[i1];
1334  for (int i2 = 0; i2 < 3; ++i2) {
1335  cellV = cv0 + shift[i2];
1336  if (((cellV - cellU) < N) && ((cellU - cellV) <= N) && (cellU >= 0) && (cellV >= 0) && (cellU < 2 * N) &&
1337  (cellV < 2 * N)) {
1338  double xc = (1.5 * (cellV - N) + 1.0) * Rc;
1339  double yc = (2 * cellU - cellV - N) * rc;
1340  if ((std::abs(yloc - yc) <= rc) && (std::abs(xloc - xc) <= Rc) &&
1341  ((std::abs(xloc - xc) <= 0.5 * Rc) || (std::abs(yloc - yc) <= sqrt3_ * (Rc - std::abs(xloc - xc))))) {
1342  if (debug)
1343  edm::LogVerbatim("HGCalGeom")
1344  << "cellHex: local " << xc << ":" << yc << " difference " << std::abs(xloc - xc) << ":"
1345  << std::abs(yloc - yc) << ":" << sqrt3_ * (Rc - std::abs(yloc - yc)) << " comparator " << rc << ":"
1346  << Rc << " (u,v) = (" << cellU << "," << cellV << ")";
1347  found = true;
1348  break;
1349  }
1350  }
1351  }
1352  if (found)
1353  break;
1354  }
1355  if (!found) {
1356  cellU = cu0;
1357  cellV = cv0;
1358  }
1359 }
CellType cellType(int type, int waferU, int waferV) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
T min(T a, T b)
Definition: MathUtil.h:58
#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 194 of file HGCalDDDConstants.cc.

References getIndex(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, hgpar_, locateCell(), mode_, HGCalParameters::rMinLayHex_, mathSSE::sqrt(), and geometryCSVtoXML::xy.

Referenced by HGCalGeometry::newCell().

194  {
195  const auto& indx = getIndex(lay, true);
196  if (indx.first >= 0) {
200  ? locateCell(lay, waferU, waferV, cellU, cellV, reco, true, false)
201  : locateCell(cellU, lay, waferU, reco));
202  double rpos = sqrt(xy.first * xy.first + xy.second * xy.second);
203  return ((rpos >= hgpar_->rMinLayHex_[indx.first]) && (rpos <= hgpar_->rMaxLayHex_[indx.first]));
204  } else {
205  return true;
206  }
207  } else {
208  return false;
209  }
210 }
std::pair< float, float > locateCell(int cell, int lay, int type, bool reco) const
HGCalGeometryMode::GeometryMode mode_
T sqrt(T t)
Definition: SSEVec.h:19
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< double > rMinLayHex_
fixed size matrix
const HGCalParameters * hgpar_
double HGCalDDDConstants::cellSizeHex ( int  type) const

Definition at line 225 of file HGCalDDDConstants.cc.

References HGCalParameters::cellSize_, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, hgpar_, HGCalParameters::k_ScaleFromDDD, mode_, and HGCalGeometryMode::Trapezoid.

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

225  {
226  int indx =
228  : ((type == 1) ? 1 : 0));
229  double cell =
232  return cell;
233 }
type
Definition: HCALResponse.h:21
HGCalGeometryMode::GeometryMode mode_
std::vector< double > cellSize_
static double k_ScaleFromDDD
const HGCalParameters * hgpar_
std::pair<double, double> HGCalDDDConstants::cellSizeTrap ( int  type,
int  irad 
) const
inline
double HGCalDDDConstants::cellThickness ( int  layer,
int  waferU,
int  waferV 
) const

Definition at line 212 of file HGCalDDDConstants.cc.

References HGCalParameters::cellThickness_, HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, hgpar_, mode_, and waferType().

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

212  {
213  double thick(-1);
214  int type = waferType(layer, waferU, waferV);
215  if (type >= 0) {
217  thick = 10000.0 * hgpar_->cellThickness_[type]; // cm to micron
219  thick = 100.0 * (type + 1); // type = 1,2,3 for 100,200,300 micron
220  }
221  }
222  return thick;
223 }
type
Definition: HCALResponse.h:21
HGCalGeometryMode::GeometryMode mode_
int waferType(DetId const &id) const
std::vector< double > cellThickness_
const HGCalParameters * hgpar_
HGCalDDDConstants::CellType HGCalDDDConstants::cellType ( int  type,
int  waferU,
int  waferV 
) const

Definition at line 235 of file HGCalDDDConstants.cc.

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

Referenced by cellSizeTrap(), and HGCalTopology::neighbors().

235  {
236  // type=0: in the middle; 1..6: the edges clocwise from bottom left;
237  // =11..16: the corners clockwise from bottom
238  int N = (type == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
239  if (cellU == 0) {
240  if (cellV == 0)
242  else if (cellV - cellU == N - 1)
244  else
246  } else if (cellV == 0) {
247  if (cellU - cellV == N)
249  else
251  } else if (cellU - cellV == N) {
252  if (cellU == 2 * N - 1)
254  else
256  } else if (cellU == 2 * N - 1) {
257  if (cellV == 2 * N - 1)
259  else
261  } else if (cellV == 2 * N - 1) {
262  if (cellV - cellU == N - 1)
264  else
266  } else if (cellV - cellU == N - 1) {
268  } else if ((cellU > 2 * N - 1) || (cellV > 2 * N - 1) || (cellV >= (cellU + N)) || (cellU > (cellV + N))) {
270  } else {
272  }
273 }
type
Definition: HCALResponse.h:21
#define N
Definition: blowfish.cc:9
const HGCalParameters * hgpar_
double HGCalDDDConstants::distFromEdgeHex ( double  x,
double  y,
double  z 
) const

Definition at line 275 of file HGCalDDDConstants.cc.

References funct::abs(), PVValHelper::dx, PVValHelper::dy, getLayer(), HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, hexside_, hgpar_, createfilelist::int, dqmdumpme::k, HGCalParameters::k_ScaleFromDDD, HGCalParameters::k_ScaleToDDD, layerIndex(), mode_, rmax_, sqrt3_, tan30deg_, HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, x, HGCalParameters::xLayerHex_, geometryCSVtoXML::xx, y, HGCalParameters::yLayerHex_, and geometryCSVtoXML::yy.

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

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

Definition at line 321 of file HGCalDDDConstants.cc.

References funct::abs(), getLayer(), hgpar_, createfilelist::int, LEDCalibrationChannels::iphi, HGCalParameters::iradMaxBH_, HGCalParameters::iradMinBH_, HGCalParameters::k_ScaleFromDDD, HGCalParameters::k_ScaleToDDD, layerIndex(), M_PI, SiStripPI::max, min(), phi, alignCSCRings::r, HGCalParameters::radiusLayer_, HGCalParameters::scintCellSize(), HGCalParameters::scintType(), mathSSE::sqrt(), and geometryCSVtoXML::xx.

Referenced by cellSizeTrap(), and HGCScintSD::isItinFidVolume().

321  {
322  // Assming the point is within the eta-phi plane of the scintillator tile,
323  // calculate the shortest distance from the edge
324  int lay = getLayer(z, false);
325  double xx = (z < 0) ? -x : x;
326  int indx = layerIndex(lay, false);
327  double r = HGCalParameters::k_ScaleFromDDD * std::sqrt(x * x + y * y);
328  double phi = (r == 0. ? 0. : std::atan2(y, xx));
329  if (phi < 0)
330  phi += (2.0 * M_PI);
331  int type = hgpar_->scintType(lay);
332  double cell = hgpar_->scintCellSize(lay);
333  // Compare with the center of the tile find distances along R and also phi
334  // Take the smaller value
335  auto ir = std::lower_bound(hgpar_->radiusLayer_[type].begin(), hgpar_->radiusLayer_[type].end(), r);
336  int irad = (int)(ir - hgpar_->radiusLayer_[type].begin());
337  irad = std::clamp(irad, hgpar_->iradMinBH_[indx], hgpar_->iradMaxBH_[indx]);
338  int iphi = 1 + (int)(phi / cell);
339  double dphi = std::max(0.0, (0.5 * cell - std::abs(phi - (iphi - 0.5) * cell)));
340  double dist = std::min((r - hgpar_->radiusLayer_[type][irad - 1]), (hgpar_->radiusLayer_[type][irad] - r));
341 #ifdef EDM_ML_DEBUG
342  edm::LogVerbatim("HGCalGeom") << "DistFromEdgeTrap: Global " << x << ":" << y << ":" << z << " Layer " << lay
343  << " Index " << indx << ":" << type << " xx " << xx << " R " << r << ":" << irad << ":"
344  << hgpar_->radiusLayer_[type][irad - 1] << ":" << hgpar_->radiusLayer_[type][irad]
345  << " Phi " << phi << ":" << iphi << ":" << (iphi - 0.5) * cell << " cell " << cell
346  << " Dphi " << dphi << " Dist " << dist << ":" << r * dphi;
347 #endif
348  return HGCalParameters::k_ScaleToDDD * std::min(r * dphi, dist);
349 }
std::vector< int > iradMaxBH_
type
Definition: HCALResponse.h:21
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
static double k_ScaleFromDDD
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
T min(T a, T b)
Definition: MathUtil.h:58
#define M_PI
static double k_ScaleToDDD
std::vector< int > iradMinBH_
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

Referenced by cellSizeTrap().

int HGCalDDDConstants::firstLayer ( ) const
inline
HGCalGeometryMode::GeometryMode HGCalDDDConstants::geomMode ( ) const
inline
std::pair< int, float > HGCalDDDConstants::getIndex ( int  lay,
bool  reco 
) const
private

Definition at line 1361 of file HGCalDDDConstants.cc.

References HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, hgpar_, layerIndex(), mode_, HGCalParameters::moduleCellR_, HGCalParameters::moduleCellS_, and HGCalParameters::scintCellSize().

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

1361  {
1362  int indx = layerIndex(lay, reco);
1363  if (indx < 0)
1364  return std::make_pair(-1, 0);
1365  float cell(0);
1367  cell = (reco ? hgpar_->moduleCellR_[0] : hgpar_->moduleCellS_[0]);
1368  } else {
1370  cell = (reco ? hgpar_->moduleCellR_[0] : hgpar_->moduleCellS_[0]);
1371  } else {
1372  cell = hgpar_->scintCellSize(lay);
1373  }
1374  }
1375  return std::make_pair(indx, cell);
1376 }
std::vector< double > moduleCellR_
HGCalGeometryMode::GeometryMode mode_
double scintCellSize(const int layer) const
int layerIndex(int lay, bool reco) const
std::vector< double > moduleCellS_
fixed size matrix
const HGCalParameters * hgpar_
int HGCalDDDConstants::getLayer ( double  z,
bool  reco 
) const

Definition at line 351 of file HGCalDDDConstants.cc.

References funct::abs(), HGCalParameters::firstLayer_, HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, hgpar_, dqmdumpme::k, HGCalParameters::k_ScaleFromDDD, HGCalParameters::layerGroupO_, layerIndex(), mode_, dt_dqm_sourceclient_common_cff::reco, HGCalParameters::zLayerHex_, and geometryCSVtoXML::zz.

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

351  {
352  // Get the layer # from the gloabl z coordinate
353  unsigned int k = 0;
354  double zz = (reco ? std::abs(z) : HGCalParameters::k_ScaleFromDDD * std::abs(z));
355  const auto& zLayerHex = hgpar_->zLayerHex_;
356  auto itr = std::find_if(zLayerHex.begin() + 1, zLayerHex.end(), [&k, &zz, &zLayerHex](double zLayer) {
357  ++k;
358  return zz < 0.5 * (zLayerHex[k - 1] + zLayerHex[k]);
359  });
360  int lay = (itr == zLayerHex.end()) ? static_cast<int>(zLayerHex.size()) : k;
362  int indx = layerIndex(lay, false);
363  if (indx >= 0)
364  lay = hgpar_->layerGroupO_[indx];
365  } else {
366  lay += (hgpar_->firstLayer_ - 1);
367  }
368  return lay;
369 }
HGCalGeometryMode::GeometryMode mode_
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_
fixed size matrix
const HGCalParameters * hgpar_
HGCalParameters::hgtrap HGCalDDDConstants::getModule ( unsigned int  k,
bool  hexType,
bool  reco 
) const

Definition at line 371 of file HGCalDDDConstants.cc.

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

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

371  {
373  if (hexType) {
374  if (indx >= hgpar_->waferTypeL_.size())
375  edm::LogWarning("HGCalGeom") << "Wafer no. out bound for index " << indx << ":" << (hgpar_->waferTypeL_).size()
376  << ":" << (hgpar_->waferPosX_).size() << ":" << (hgpar_->waferPosY_).size()
377  << " ***** ERROR *****";
378  unsigned int type =
379  ((indx < hgpar_->waferTypeL_.size()) ? hgpar_->waferTypeL_[indx] - 1 : HGCSiliconDetId::HGCalCoarseThick);
380  mytr = hgpar_->getModule(type, reco);
381  } else {
382  mytr = hgpar_->getModule(indx, reco);
383  }
384  return mytr;
385 }
size
Write out results.
std::vector< double > waferPosY_
type
Definition: HCALResponse.h:21
hgtrap getModule(unsigned int k, bool reco) const
fixed size matrix
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::vector< int > waferTypeL_
std::vector< HGCalParameters::hgtrap > HGCalDDDConstants::getModules ( ) const

Definition at line 387 of file HGCalDDDConstants.cc.

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

Referenced by geomMode().

387  {
388  std::vector<HGCalParameters::hgtrap> mytrs;
389  for (unsigned int k = 0; k < hgpar_->moduleLayR_.size(); ++k)
390  mytrs.emplace_back(hgpar_->getModule(k, true));
391  return mytrs;
392 }
std::vector< int > moduleLayR_
hgtrap getModule(unsigned int k, bool reco) const
const HGCalParameters * hgpar_
const HGCalParameters* HGCalDDDConstants::getParameter ( ) const
inline

Definition at line 71 of file HGCalDDDConstants.h.

References getPhiBins(), getREtaRange(), and hgpar_.

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

71 { return hgpar_; }
const HGCalParameters * hgpar_
int HGCalDDDConstants::getPhiBins ( int  lay) const

Definition at line 394 of file HGCalDDDConstants.cc.

References hgpar_, mode_, HGCalParameters::scintCells(), and HGCalGeometryMode::Trapezoid.

Referenced by getParameter().

394  {
395  return ((mode_ == HGCalGeometryMode::Trapezoid) ? hgpar_->scintCells(lay) : 0);
396 }
HGCalGeometryMode::GeometryMode mode_
int scintCells(const int layer) const
const HGCalParameters * hgpar_
const std::vector<double>& HGCalDDDConstants::getRadiusLayer ( int  layer) const
inline

Definition at line 74 of file HGCalDDDConstants.h.

References hgpar_, mode_, HGCalParameters::radiusLayer_, HGCalParameters::scintType(), and HGCalGeometryMode::Trapezoid.

74  {
75  int type = ((mode_ == HGCalGeometryMode::Trapezoid) ? hgpar_->scintType(layer) : 0);
76  return hgpar_->radiusLayer_[type];
77  }
type
Definition: HCALResponse.h:21
int scintType(const int layer) const
HGCalGeometryMode::GeometryMode mode_
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
std::pair< int, int > HGCalDDDConstants::getREtaRange ( int  lay) const

Definition at line 398 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::iradMaxBH_, HGCalParameters::iradMinBH_, layerIndex(), mode_, and HGCalGeometryMode::Trapezoid.

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

398  {
399  int irmin(0), irmax(0);
401  int indx = layerIndex(lay, false);
402  if ((indx >= 0) && (indx < static_cast<int>(hgpar_->iradMinBH_.size()))) {
403  irmin = hgpar_->iradMinBH_[indx];
404  irmax = hgpar_->iradMaxBH_[indx];
405  }
406  }
407  return std::make_pair(irmin, irmax);
408 }
std::vector< int > iradMaxBH_
HGCalGeometryMode::GeometryMode mode_
int layerIndex(int lay, bool reco) const
std::vector< int > iradMinBH_
const HGCalParameters * hgpar_
HGCalParameters::hgtrform HGCalDDDConstants::getTrForm ( unsigned int  k) const
inline

Definition at line 78 of file HGCalDDDConstants.h.

References HGCalParameters::getTrForm(), and hgpar_.

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

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

Definition at line 79 of file HGCalDDDConstants.h.

References getTrForms(), getTypeHex(), getTypeTrap(), hgpar_, and HGCalParameters::trformIndex_.

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

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

Definition at line 410 of file HGCalDDDConstants.cc.

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

Referenced by HGCalTrackCollectionProducer::beginLuminosityBlock(), and getTrFormN().

410  {
411  std::vector<HGCalParameters::hgtrform> mytrs;
412  for (unsigned int k = 0; k < hgpar_->trformIndex_.size(); ++k)
413  mytrs.emplace_back(hgpar_->getTrForm(k));
414  return mytrs;
415 }
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 426 of file HGCalDDDConstants.cc.

References HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, hgpar_, mode_, HGCalParameters::typesInLayers_, HGCalWaferIndex::waferIndex(), and HGCalParameters::waferTypeL_.

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

426  {
427  // Get the module type for a silicon wafer
429  auto itr = hgpar_->typesInLayers_.find(HGCalWaferIndex::waferIndex(layer, waferU, waferV));
430  return ((itr == hgpar_->typesInLayers_.end() ? 2 : hgpar_->waferTypeL_[itr->second]));
431  } else {
432  return -1;
433  }
434 }
HGCalGeometryMode::GeometryMode mode_
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
wafer_map typesInLayers_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
int HGCalDDDConstants::getTypeTrap ( int  layer) const

Definition at line 417 of file HGCalDDDConstants.cc.

References hgpar_, mode_, HGCalParameters::scintType(), and HGCalGeometryMode::Trapezoid.

Referenced by HGCalTriggerGeometryV9Imp1::fillInvalidTriggerCells(), HGCalTriggerGeometryV9Imp1::getCellsFromTriggerCell(), HGCalTriggerGeometryV9Imp1::getNeighborsFromTriggerCell(), and getTrFormN().

417  {
418  // Get the module type for scinitllator
420  return hgpar_->scintType(layer);
421  } else {
422  return -1;
423  }
424 }
int scintType(const int layer) const
HGCalGeometryMode::GeometryMode mode_
const HGCalParameters * hgpar_
int HGCalDDDConstants::getUVMax ( int  type) const
inline
bool HGCalDDDConstants::isHalfCell ( int  waferType,
int  cell 
) const

Definition at line 436 of file HGCalDDDConstants.cc.

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

Referenced by getUVMax(), and hgcal::RecHitTools::isHalfCell().

436  {
437  if (waferType < 1 || cell < 0)
438  return false;
439  return waferType == 2 ? hgpar_->cellCoarseHalf_[cell] : hgpar_->cellFineHalf_[cell];
440 }
std::vector< bool > cellCoarseHalf_
std::vector< bool > cellFineHalf_
int waferType(DetId const &id) const
const HGCalParameters * hgpar_
bool HGCalDDDConstants::isValidCell ( int  layindex,
int  wafer,
int  cell 
) const
private

Definition at line 1378 of file HGCalDDDConstants.cc.

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

Referenced by isValidHex(), and waferUVMax().

1378  {
1379  // Calculate the position of the cell
1380  // Works for options HGCalHexagon/HGCalHexagonFull
1381  double x = hgpar_->waferPosX_[wafer];
1382  double y = hgpar_->waferPosY_[wafer];
1383  if (hgpar_->waferTypeT_[wafer] - 1 == HGCSiliconDetId::HGCalFine) {
1384  x += hgpar_->cellFineX_[cell];
1385  y += hgpar_->cellFineY_[cell];
1386  } else {
1387  x += hgpar_->cellCoarseX_[cell];
1388  y += hgpar_->cellCoarseY_[cell];
1389  }
1390  double rr = sqrt(x * x + y * y);
1391  bool result = ((rr >= hgpar_->rMinLayHex_[lay - 1]) && (rr <= hgpar_->rMaxLayHex_[lay - 1]) &&
1392  (wafer < (int)(hgpar_->waferPosX_.size())));
1393 #ifdef EDM_ML_DEBUG
1394  if (!result)
1395  edm::LogVerbatim("HGCalGeom") << "Input " << lay << ":" << wafer << ":" << cell << " Position " << x << ":" << y
1396  << ":" << rr << " Compare Limits " << hgpar_->rMinLayHex_[lay - 1] << ":"
1397  << hgpar_->rMaxLayHex_[lay - 1] << " Flag " << result;
1398 #endif
1399  return result;
1400 }
std::vector< double > waferPosY_
std::vector< double > cellFineY_
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 1402 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseIndex_, HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineIndex_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, HGCalParameters::firstLayer_, hgpar_, mps_fire::result, HGCalParameters::rMaxLayHex_, HGCalParameters::rMinLayHex_, findQualityFiles::rr, mathSSE::sqrt(), waferPosition(), x, geometryCSVtoXML::xy, and y.

Referenced by isValidHex8(), and waferUVMax().

1402  {
1403  float x(0), y(0);
1404  int kndx = cellV * 100 + cellU;
1405  if (type == 0) {
1406  auto ktr = hgpar_->cellFineIndex_.find(kndx);
1407  if (ktr != hgpar_->cellFineIndex_.end()) {
1408  x = hgpar_->cellFineX_[ktr->second];
1409  y = hgpar_->cellFineY_[ktr->second];
1410  }
1411 #ifdef EDM_ML_DEBUG
1412  edm::LogVerbatim("HGCalGeom") << "Fine " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
1413  << (ktr != hgpar_->cellFineIndex_.end());
1414 #endif
1415  } else {
1416  auto ktr = hgpar_->cellCoarseIndex_.find(kndx);
1417  if (ktr != hgpar_->cellCoarseIndex_.end()) {
1418  x = hgpar_->cellCoarseX_[ktr->second];
1419  y = hgpar_->cellCoarseY_[ktr->second];
1420  }
1421 #ifdef EDM_ML_DEBUG
1422  edm::LogVerbatim("HGCalGeom") << "Coarse " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
1423  << (ktr != hgpar_->cellCoarseIndex_.end());
1424 #endif
1425  }
1426  const auto& xy = waferPosition(lay, waferU, waferV, true, false);
1427  x += xy.first;
1428  y += xy.second;
1429 #ifdef EDM_ML_DEBUG
1430  edm::LogVerbatim("HGCalGeom") << "With wafer (" << waferU << "," << waferV << ") " << x << ":" << y;
1431 #endif
1432  double rr = sqrt(x * x + y * y);
1433  int ll = lay - hgpar_->firstLayer_;
1434  bool result = ((rr >= hgpar_->rMinLayHex_[ll]) && (rr <= hgpar_->rMaxLayHex_[ll]));
1435 #ifdef EDM_ML_DEBUG
1436  edm::LogVerbatim("HGCalGeom") << "Input " << lay << ":" << ll << ":" << waferU << ":" << waferV << ":" << cellU << ":"
1437  << cellV << " Position " << x << ":" << y << ":" << rr << " Compare Limits "
1438  << hgpar_->rMinLayHex_[ll] << ":" << hgpar_->rMaxLayHex_[ll] << " Flag " << result;
1439 #endif
1440  return result;
1441 }
type
Definition: HCALResponse.h:21
wafer_map cellFineIndex_
std::vector< double > cellFineY_
std::vector< double > cellCoarseX_
T sqrt(T t)
Definition: SSEVec.h:19
std::vector< double > rMinLayHex_
std::vector< double > rMaxLayHex_
wafer_map cellCoarseIndex_
std::vector< double > cellFineX_
std::pair< double, double > waferPosition(int wafer, bool reco) const
std::vector< double > cellCoarseY_
const HGCalParameters * hgpar_
bool HGCalDDDConstants::isValidHex ( int  lay,
int  mod,
int  cell,
bool  reco 
) const

Definition at line 442 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellFineX_, HGCalParameters::copiesInLayers_, HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, HGCSiliconDetId::HGCalFine, hgpar_, createfilelist::int, isValidCell(), layers(), maxCells(), mod(), mode_, mps_fire::result, findQualityFiles::size, HGCalParameters::waferCopy_, and HGCalParameters::waferTypeT_.

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

442  {
443  // Check validity for a layer|wafer|cell of pre-TDR version
444  bool result(false), resultMod(false);
445  int cellmax(0);
447  int32_t copyNumber = hgpar_->waferCopy_[mod];
448  result = ((lay > 0 && lay <= (int)(layers(reco))));
449  if (result) {
450  const int32_t lay_idx = reco ? (lay - 1) * 3 + 1 : lay;
451  const auto& the_modules = hgpar_->copiesInLayers_[lay_idx];
452  auto moditr = the_modules.find(copyNumber);
453  result = resultMod = (moditr != the_modules.end());
454 #ifdef EDM_ML_DEBUG
455  if (!result)
456  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants: Layer " << lay << ":" << lay_idx << " Copy " << copyNumber
457  << ":" << mod << " Flag " << result;
458 #endif
459  if (result) {
460  if (moditr->second >= 0) {
461  if (mod >= (int)(hgpar_->waferTypeT_.size()))
462  edm::LogWarning("HGCalGeom") << "Module no. out of bound for " << mod << " to be compared with "
463  << (hgpar_->waferTypeT_).size() << " ***** ERROR *****";
464  cellmax = ((hgpar_->waferTypeT_[mod] - 1 == HGCSiliconDetId::HGCalFine) ? (int)(hgpar_->cellFineX_.size())
465  : (int)(hgpar_->cellCoarseX_.size()));
466  result = (cell >= 0 && cell <= cellmax);
467  } else {
468  result = isValidCell(lay_idx, mod, cell);
469  }
470  }
471  }
472  }
473 
474 #ifdef EDM_ML_DEBUG
475  if (!result)
476  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants: Layer " << lay << ":"
477  << (lay > 0 && (lay <= (int)(layers(reco)))) << " Module " << mod << ":" << resultMod
478  << " Cell " << cell << ":" << cellmax << ":" << (cell >= 0 && cell <= cellmax) << ":"
479  << maxCells(reco);
480 #endif
481  return result;
482 }
size
Write out results.
layer_map copiesInLayers_
HGCalGeometryMode::GeometryMode mode_
std::vector< double > cellCoarseX_
unsigned int layers(bool reco) const
bool isValidCell(int layindex, int wafer, int cell) const
std::vector< double > cellFineX_
fixed size matrix
std::vector< int > waferCopy_
std::vector< int > waferTypeT_
const HGCalParameters * hgpar_
int maxCells(bool reco) const
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
bool HGCalDDDConstants::isValidHex8 ( int  lay,
int  modU,
int  modV,
int  cellU,
int  cellV 
) const

Definition at line 484 of file HGCalDDDConstants.cc.

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

Referenced by HGCalTopology::addHGCSiliconId(), getUVMax(), and HGCalTopology::valid().

484  {
485  // Check validity for a layer|wafer|cell of post-TDR version
486  int indx = HGCalWaferIndex::waferIndex(layer, modU, modV);
487  auto itr = hgpar_->typesInLayers_.find(indx);
488 #ifdef EDM_ML_DEBUG
489  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants::isValidHex8:WaferType " << layer << ":" << modU << ":" << modV
490  << ":" << indx << " Test " << (itr != hgpar_->typesInLayers_.end());
491 #endif
492  if (itr == hgpar_->typesInLayers_.end())
493  return false;
494  auto jtr = waferIn_.find(indx);
495 #ifdef EDM_ML_DEBUG
496  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants::isValidHex8:WaferIn " << jtr->first << ":" << jtr->second;
497 #endif
498  if (!(jtr->second))
499  return false;
500 
501  int N = ((hgpar_->waferTypeL_[itr->second] == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_);
502 #ifdef EDM_ML_DEBUG
503  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants::isValidHex8:Cell " << cellU << ":" << cellV << ":" << N
504  << " Tests " << (cellU >= 0) << ":" << (cellU < 2 * N) << ":" << (cellV >= 0) << ":"
505  << (cellV < 2 * N) << ":" << ((cellV - cellU) < N) << ":" << ((cellU - cellV) <= N);
506 #endif
507  if ((cellU < 0) || (cellU >= 2 * N) || (cellV < 0) || (cellV >= 2 * N))
508  return false;
509  if (((cellV - cellU) >= N) || ((cellU - cellV) > N))
510  return false;
511 
512  auto ktr = hgpar_->waferTypes_.find(indx);
513  if (ktr != hgpar_->waferTypes_.end())
514  return false;
515 
516  // edm::LogVerbatim("HGCalGeom") << "Corners " << (ktr->second).first << ":" << waferVirtual(layer,modU,modV);
517  int type = ((itr == hgpar_->typesInLayers_.end()) ? 2 : hgpar_->waferTypeL_[itr->second]);
518  return isValidCell8(layer, modU, modV, cellU, cellV, type);
519 }
type
Definition: HCALResponse.h:21
std::unordered_map< int32_t, bool > waferIn_
bool isValidCell8(int lay, int waferU, int waferV, int cellU, int cellV, int type) const
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
#define N
Definition: blowfish.cc:9
wafer_map typesInLayers_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
bool HGCalDDDConstants::isValidTrap ( int  lay,
int  ieta,
int  iphi 
) const

Definition at line 521 of file HGCalDDDConstants.cc.

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

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

521  {
522  // Check validity for a layer|eta|phi of scintillator
523  const auto& indx = getIndex(layer, true);
524  if (indx.first < 0)
525  return false;
526  return ((irad >= hgpar_->iradMinBH_[indx.first]) && (irad <= hgpar_->iradMaxBH_[indx.first]) && (iphi > 0) &&
527  (iphi <= hgpar_->scintCells(layer)));
528 }
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< int > iradMinBH_
const HGCalParameters * hgpar_
int HGCalDDDConstants::lastLayer ( bool  reco) const

Definition at line 530 of file HGCalDDDConstants.cc.

References HGCalParameters::firstLayer_, hgpar_, and tot_layers_.

Referenced by getUVMax(), and HGCalGeometry::neighborZ().

530 { return (hgpar_->firstLayer_ + tot_layers_[(int)reco] - 1); }
fixed size matrix
std::array< uint32_t, 2 > tot_layers_
const HGCalParameters * hgpar_
int HGCalDDDConstants::layerIndex ( int  lay,
bool  reco 
) const

Definition at line 534 of file HGCalDDDConstants.cc.

References HGCalParameters::depthIndex_, HGCalParameters::depthLayerF_, HGCalParameters::firstLayer_, HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, hgpar_, HGCalParameters::layerIndex_, and mode_.

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

534  {
535  int ll = lay - hgpar_->firstLayer_;
536  if (ll < 0 || ll >= (int)(hgpar_->layerIndex_.size()))
537  return -1;
539  if (reco && ll >= (int)(hgpar_->depthIndex_.size()))
540  return -1;
541  return (reco ? hgpar_->depthLayerF_[ll] : hgpar_->layerIndex_[ll]);
542  } else {
543  return (hgpar_->layerIndex_[ll]);
544  }
545 }
std::vector< int > depthLayerF_
HGCalGeometryMode::GeometryMode mode_
std::vector< int > layerIndex_
fixed size matrix
std::vector< int > depthIndex_
const HGCalParameters * hgpar_
unsigned int HGCalDDDConstants::layers ( bool  reco) const
unsigned int HGCalDDDConstants::layersInit ( bool  reco) const

Definition at line 547 of file HGCalDDDConstants.cc.

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

Referenced by getUVMax(), and HGCalDDDConstants().

547  {
548  return (reco ? hgpar_->depthIndex_.size() : hgpar_->layerIndex_.size());
549 }
std::vector< int > layerIndex_
fixed size matrix
std::vector< int > depthIndex_
const HGCalParameters * hgpar_
int HGCalDDDConstants::levelTop ( int  ind = 0) const
inline

Definition at line 97 of file HGCalDDDConstants.h.

References hgpar_, HGCalParameters::levelT_, and maskCell().

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

97 { return hgpar_->levelT_[ind]; }
std::vector< int > levelT_
const HGCalParameters * hgpar_
std::pair< float, float > HGCalDDDConstants::locateCell ( int  cell,
int  lay,
int  type,
bool  reco 
) const

Definition at line 551 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, getIndex(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, HGCSiliconDetId::HGCalFine, hgpar_, mps_fire::i, HGCalParameters::k_ScaleToDDD, mode_, 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(), HGCalGeometry::getPosition(), and getUVMax().

551  {
552  // type refers to wafer # for hexagon cell
553  float x(999999.), y(999999.);
554  const auto& index = getIndex(lay, reco);
555  int i = index.first;
556  if (i < 0)
557  return std::make_pair(x, y);
559  x = hgpar_->waferPosX_[type];
560  y = hgpar_->waferPosY_[type];
562  x += hgpar_->cellFineX_[cell];
563  y += hgpar_->cellFineY_[cell];
564  } else {
565  x += hgpar_->cellCoarseX_[cell];
566  y += hgpar_->cellCoarseY_[cell];
567  }
568  if (!reco) {
571  }
572  }
573  return std::make_pair(x, y);
574 }
std::vector< double > waferPosY_
type
Definition: HCALResponse.h:21
std::vector< double > cellFineY_
HGCalGeometryMode::GeometryMode mode_
std::vector< double > cellCoarseX_
std::pair< int, float > getIndex(int lay, bool reco) const
static double k_ScaleToDDD
std::vector< double > cellFineX_
fixed size matrix
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  debug = false 
) const

Definition at line 576 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseIndex_, HGCalParameters::cellCoarseX_, HGCalParameters::cellCoarseY_, HGCalParameters::cellFineIndex_, HGCalParameters::cellFineX_, HGCalParameters::cellFineY_, hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::typesInLayers_, HGCalWaferIndex::waferIndex(), waferPosition(), HGCalParameters::waferTypeL_, x, geometryCSVtoXML::xy, and y.

577  {
578  float x(0), y(0);
579  int indx = HGCalWaferIndex::waferIndex(lay, waferU, waferV);
580  auto itr = hgpar_->typesInLayers_.find(indx);
581  int type = ((itr == hgpar_->typesInLayers_.end()) ? 2 : hgpar_->waferTypeL_[itr->second]);
582 #ifdef EDM_ML_DEBUG
583  if (debug)
584  edm::LogVerbatim("HGCalGeom") << "LocateCell " << lay << ":" << waferU << ":" << waferV << ":" << indx << ":"
585  << (itr == hgpar_->typesInLayers_.end()) << ":" << type;
586 #endif
587  int kndx = cellV * 100 + cellU;
588  if (type == 0) {
589  auto ktr = hgpar_->cellFineIndex_.find(kndx);
590  if (ktr != hgpar_->cellFineIndex_.end()) {
591  x = hgpar_->cellFineX_[ktr->second];
592  y = hgpar_->cellFineY_[ktr->second];
593  }
594 #ifdef EDM_ML_DEBUG
595  if (debug)
596  edm::LogVerbatim("HGCalGeom") << "Fine " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
597  << (ktr != hgpar_->cellFineIndex_.end());
598 #endif
599  } else {
600  auto ktr = hgpar_->cellCoarseIndex_.find(kndx);
601  if (ktr != hgpar_->cellCoarseIndex_.end()) {
602  x = hgpar_->cellCoarseX_[ktr->second];
603  y = hgpar_->cellCoarseY_[ktr->second];
604  }
605 #ifdef EDM_ML_DEBUG
606  if (debug)
607  edm::LogVerbatim("HGCalGeom") << "Coarse " << cellU << ":" << cellV << ":" << kndx << ":" << x << ":" << y << ":"
608  << (ktr != hgpar_->cellCoarseIndex_.end());
609 #endif
610  }
611  if (!reco) {
614  }
615  if (all) {
616  const auto& xy = waferPosition(lay, waferU, waferV, reco, debug);
617  x += xy.first;
618  y += xy.second;
619 #ifdef EDM_ML_DEBUG
620  if (debug)
621  edm::LogVerbatim("HGCalGeom") << "With wafer " << x << ":" << y << ":" << xy.first << ":" << xy.second;
622 #endif
623  }
624  return std::make_pair(x, y);
625 }
type
Definition: HCALResponse.h:21
wafer_map cellFineIndex_
std::vector< double > cellFineY_
std::vector< double > cellCoarseX_
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
#define debug
Definition: HDRShower.cc:19
static double k_ScaleToDDD
wafer_map cellCoarseIndex_
std::vector< double > cellFineX_
wafer_map typesInLayers_
fixed size matrix
std::pair< double, double > waferPosition(int wafer, bool reco) const
std::vector< double > cellCoarseY_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
std::pair< float, float > HGCalDDDConstants::locateCellHex ( int  cell,
int  wafer,
bool  reco 
) const

Definition at line 627 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(), HGCalGeometry::getPosition(), and getUVMax().

627  {
628  float x(0), y(0);
629  if (hgpar_->waferTypeT_[wafer] - 1 == HGCSiliconDetId::HGCalFine) {
630  x = hgpar_->cellFineX_[cell];
631  y = hgpar_->cellFineY_[cell];
632  } else {
633  x = hgpar_->cellCoarseX_[cell];
634  y = hgpar_->cellCoarseY_[cell];
635  }
636  if (!reco) {
639  }
640  return std::make_pair(x, y);
641 }
std::vector< double > cellFineY_
std::vector< double > cellCoarseX_
static double k_ScaleToDDD
std::vector< double > cellFineX_
fixed size matrix
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 643 of file HGCalDDDConstants.cc.

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

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

643  {
644  float x(0), y(0);
645  const auto& indx = getIndex(lay, reco);
646  if (indx.first >= 0) {
647  int ir = std::abs(irad);
648  int type = hgpar_->scintType(lay);
649  double phi = (iphi - 0.5) * indx.second;
650  double z = hgpar_->zLayerHex_[indx.first];
651  double r = 0.5 * (hgpar_->radiusLayer_[type][ir - 1] + hgpar_->radiusLayer_[type][ir]);
652  std::pair<double, double> range = rangeR(z, true);
653 #ifdef EDM_ML_DEBUG
654  edm::LogVerbatim("HGCalGeom") << "locateCellTrap:: Input " << lay << ":" << irad << ":" << iphi << ":" << reco
655  << " IR " << ir << ":" << hgpar_->iradMinBH_[indx.first] << ":"
656  << hgpar_->iradMaxBH_[indx.first] << " Type " << type << " Z " << indx.first << ":"
657  << z << " phi " << phi << " R " << r << ":" << range.first << ":" << range.second;
658 #endif
659  r = std::max(range.first, std::min(r, range.second));
660  x = r * std::cos(phi);
661  y = r * std::sin(phi);
662  if (irad < 0)
663  x = -x;
664  }
665  if (!reco) {
668  }
669  return std::make_pair(x, y);
670 }
std::vector< int > iradMaxBH_
type
Definition: HCALResponse.h:21
int scintType(const int layer) const
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
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
T min(T a, T b)
Definition: MathUtil.h:58
std::vector< double > zLayerHex_
static double k_ScaleToDDD
std::vector< int > iradMinBH_
fixed size matrix
std::vector< double > radiusLayer_[2]
const HGCalParameters * hgpar_
bool HGCalDDDConstants::maskCell ( const DetId id,
int  corners 
) const

Definition at line 677 of file HGCalDDDConstants.cc.

References DetId::det(), dqmdumpme::first, DetId::Forward, getUVMax(), HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, hgpar_, triggerObjects_cff::id, HGCalParameters::k_CornerSize, mode_, N, edm::second(), findQualityFiles::v, HGCalWaferIndex::waferIndex(), HGCalParameters::waferTypes_, and LaserClient_cfi::wl.

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

677  {
678  bool mask(false);
679  if (corners > 2 && corners <= (int)(HGCalParameters::k_CornerSize)) {
681  int N(0), layer(0), waferU(0), waferV(0), u(0), v(0);
682  if (detId.det() == DetId::Forward) {
683  HFNoseDetId id(detId);
684  N = getUVMax(id.type());
685  layer = id.layer();
686  waferU = id.waferU();
687  waferV = id.waferV();
688  u = id.cellU();
689  v = id.cellV();
690  } else {
691  HGCSiliconDetId id(detId);
692  N = getUVMax(id.type());
693  layer = id.layer();
694  waferU = id.waferU();
695  waferV = id.waferV();
696  u = id.cellU();
697  v = id.cellV();
698  }
699  int wl = HGCalWaferIndex::waferIndex(layer, waferU, waferV);
700  auto itr = hgpar_->waferTypes_.find(wl);
701 #ifdef EDM_ML_DEBUG
702  edm::LogVerbatim("HGCalGeom") << "MaskCell: Layer " << layer << " Wafer " << waferU << ":" << waferV << " Index "
703  << wl << ":" << (itr != hgpar_->waferTypes_.end());
704 #endif
705  if (itr != hgpar_->waferTypes_.end()) {
706  int ncor = (itr->second).first;
707  int fcor = (itr->second).second;
708  if (ncor < corners) {
709  mask = true;
710  } else {
711  if (ncor == 4) {
712  switch (fcor) {
713  case (0): {
714  mask = (v >= N);
715  break;
716  }
717  case (1): {
718  mask = (u >= N);
719  break;
720  }
721  case (2): {
722  mask = (u > v);
723  break;
724  }
725  case (3): {
726  mask = (v < N);
727  break;
728  }
729  case (4): {
730  mask = (u < N);
731  break;
732  }
733  default: {
734  mask = (u <= v);
735  break;
736  }
737  }
738  } else {
739  switch (fcor) {
740  case (0): {
741  if (ncor == 3) {
742  mask = !((u > 2 * v) && (v < N));
743  } else {
744  mask = ((u >= N) && (v >= N) && ((u + v) > (3 * N - 2)));
745  }
746  break;
747  }
748  case (1): {
749  if (ncor == 3) {
750  mask = !((u + v) < N);
751  } else {
752  mask = ((u >= N) && (u > v) && ((2 * u - v) > 2 * N));
753  }
754  break;
755  }
756  case (2): {
757  if (ncor == 3) {
758  mask = !((u < N) && (v > u) && (v > (2 * u - 1)));
759  } else {
760  mask = ((u > 2 * v) && (v < N));
761  }
762  break;
763  }
764  case (3): {
765  if (ncor == 3) {
766  mask = !((v >= u) && ((2 * v - u) > (2 * N - 2)));
767  } else {
768  mask = ((u + v) < N);
769  }
770  break;
771  }
772  case (4): {
773  if (ncor == 3) {
774  mask = !((u >= N) && (v >= N) && ((u + v) > (3 * N - 2)));
775  } else {
776  mask = ((u < N) && (v > u) && (v > (2 * u - 1)));
777  }
778  break;
779  }
780  default: {
781  if (ncor == 3) {
782  mask = !((u >= N) && (u > v) && ((2 * u - v) > 2 * N));
783  } else {
784  mask = ((v >= u) && ((2 * v - u) > (2 * N - 2)));
785  }
786  break;
787  }
788  }
789  }
790 #ifdef EDM_ML_DEBUG
791  edm::LogVerbatim("HGCalGeom") << "Corners: " << ncor << ":" << fcor << " N " << N << " u " << u << " v " << v
792  << " Mask " << mask;
793 #endif
794  }
795  }
796  }
797  }
798  return mask;
799 }
type
Definition: HCALResponse.h:21
HGCalGeometryMode::GeometryMode mode_
U second(std::pair< T, U > const &p)
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
static uint32_t k_CornerSize
#define N
Definition: blowfish.cc:9
const HGCalParameters * hgpar_
int getUVMax(int type) const
int HGCalDDDConstants::maxCells ( bool  reco) const

Definition at line 801 of file HGCalDDDConstants.cc.

References postprocess-scan-build::cells, HGCalParameters::depth_, hgpar_, mps_fire::i, HGCalParameters::layer_, and layers().

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

801  {
802  int cells(0);
803  for (unsigned int i = 0; i < layers(reco); ++i) {
804  int lay = reco ? hgpar_->depth_[i] : hgpar_->layer_[i];
805  if (cells < maxCells(lay, reco))
806  cells = maxCells(lay, reco);
807  }
808  return cells;
809 }
std::vector< int > layer_
std::vector< int > depth_
unsigned int layers(bool reco) const
fixed size matrix
const HGCalParameters * hgpar_
int maxCells(bool reco) const
int HGCalDDDConstants::maxCells ( int  lay,
bool  reco 
) const

Definition at line 811 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellFineX_, postprocess-scan-build::cells, HGCalParameters::defineFull_, HGCalParameters::firstLayer_, getIndex(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, HGCSiliconDetId::HGCalCoarseThick, HGCSiliconDetId::HGCalFine, hgpar_, dqmdumpme::k, SiStripPI::max, mode_, N, HGCalParameters::nCellsCoarse_, HGCalParameters::nCellsFine_, HGCalParameters::scintCells(), HGCalGeometryMode::Trapezoid, HGCalParameters::typesInLayers_, HGCalParameters::waferCopy_, HGCalWaferIndex::waferIndex(), waferInLayerTest(), HGCalParameters::waferTypeL_, HGCalParameters::waferTypeT_, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

811  {
812  const auto& index = getIndex(lay, reco);
813  if (index.first < 0)
814  return 0;
816  unsigned int cells(0);
817  for (unsigned int k = 0; k < hgpar_->waferTypeT_.size(); ++k) {
818  if (waferInLayerTest(k, index.first, hgpar_->defineFull_)) {
819  unsigned int cell = (hgpar_->waferTypeT_[k] - 1 == HGCSiliconDetId::HGCalFine) ? (hgpar_->cellFineX_.size())
820  : (hgpar_->cellCoarseX_.size());
821  if (cell > cells)
822  cells = cell;
823  }
824  }
825  return (int)(cells);
827  int cells(0);
828  for (unsigned int k = 0; k < hgpar_->waferCopy_.size(); ++k) {
829  if (waferInLayerTest(k, index.first, hgpar_->defineFull_)) {
833  : hgpar_->waferTypeL_[itr->second]);
835  cells = std::max(cells, 3 * N * N);
836  }
837  }
838  return cells;
839  } else if (mode_ == HGCalGeometryMode::Trapezoid) {
840  return hgpar_->scintCells(index.first + hgpar_->firstLayer_);
841  } else {
842  return 0;
843  }
844 }
type
Definition: HCALResponse.h:21
static int32_t waferV(const int32_t index)
bool waferInLayerTest(int wafer, int lay, bool full) const
HGCalGeometryMode::GeometryMode mode_
std::vector< double > cellCoarseX_
std::pair< int, float > getIndex(int lay, bool reco) const
int scintCells(const int layer) const
static int32_t waferU(const int32_t index)
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
#define N
Definition: blowfish.cc:9
std::vector< double > cellFineX_
wafer_map typesInLayers_
fixed size matrix
std::vector< int > waferCopy_
std::vector< int > waferTypeT_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
int HGCalDDDConstants::maxCellUV ( ) const
inline
int HGCalDDDConstants::maxModules ( ) const
inline

Definition at line 104 of file HGCalDDDConstants.h.

References modHalf_.

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

Definition at line 105 of file HGCalDDDConstants.h.

References maxRows(), and maxWafersPerLayer_.

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

Definition at line 846 of file HGCalDDDConstants.cc.

References HGCalParameters::defineFull_, getIndex(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, hgpar_, mps_fire::i, dqmdumpme::k, mode_, HGCalParameters::waferCopy_, waferInLayerTest(), and HGCalParameters::waferUVMaxLayer_.

Referenced by maxModulesPerLayer().

846  {
847  int kymax(0);
848  const auto& index = getIndex(lay, reco);
849  int i = index.first;
850  if (i < 0)
851  return kymax;
853  for (unsigned int k = 0; k < hgpar_->waferCopy_.size(); ++k) {
854  if (waferInLayerTest(k, i, hgpar_->defineFull_)) {
855  int ky = ((hgpar_->waferCopy_[k]) / 100) % 100;
856  if (ky > kymax)
857  kymax = ky;
858  }
859  }
861  kymax = 1 + 2 * hgpar_->waferUVMaxLayer_[index.first];
862  }
863  return kymax;
864 }
bool waferInLayerTest(int wafer, int lay, bool full) const
HGCalGeometryMode::GeometryMode mode_
std::vector< int > waferUVMaxLayer_
std::pair< int, float > getIndex(int lay, bool reco) const
fixed size matrix
std::vector< int > waferCopy_
const HGCalParameters * hgpar_
double HGCalDDDConstants::minSlope ( ) const
inline
int HGCalDDDConstants::modifyUV ( int  uv,
int  type1,
int  type2 
) const

Definition at line 866 of file HGCalDDDConstants.cc.

Referenced by minSlope(), and HGCalTopology::neighbors().

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

Definition at line 871 of file HGCalDDDConstants.cc.

References dqmdumpme::first, getIndex(), createfilelist::int, and max_modules_layer_.

Referenced by minSlope(), and wafers().

871  {
872  if (getIndex(lay, reco).first < 0)
873  return 0;
874  else
875  return max_modules_layer_[(int)reco][lay];
876 }
Simrecovecs max_modules_layer_
std::pair< int, float > getIndex(int lay, bool reco) const
fixed size matrix
int HGCalDDDConstants::modulesInit ( int  lay,
bool  reco 
) const

Definition at line 878 of file HGCalDDDConstants.cc.

References HGCalParameters::defineFull_, HGCalParameters::firstModule_, getIndex(), hgpar_, dqmdumpme::k, HGCalParameters::lastModule_, mode_, HGCalGeometryMode::Trapezoid, waferInLayerTest(), and HGCalParameters::waferPosX_.

Referenced by HGCalDDDConstants(), and minSlope().

878  {
879  int nmod(0);
880  const auto& index = getIndex(lay, reco);
881  if (index.first < 0)
882  return nmod;
884  for (unsigned int k = 0; k < hgpar_->waferPosX_.size(); ++k) {
885  if (waferInLayerTest(k, index.first, hgpar_->defineFull_))
886  ++nmod;
887  }
888  } else {
889  nmod = 1 + hgpar_->lastModule_[index.first] - hgpar_->firstModule_[index.first];
890  }
891  return nmod;
892 }
bool waferInLayerTest(int wafer, int lay, bool full) const
HGCalGeometryMode::GeometryMode mode_
std::vector< int > firstModule_
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< int > lastModule_
fixed size matrix
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
double HGCalDDDConstants::mouseBite ( bool  reco) const
int HGCalDDDConstants::numberCells ( bool  reco) const

Definition at line 898 of file HGCalDDDConstants.cc.

References postprocess-scan-build::cells, HGCalParameters::depth_, hgpar_, dqmdumpme::k, HGCalParameters::layer_, and dt_dqm_sourceclient_common_cff::reco.

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

898  {
899  int cells(0);
900  unsigned int nlayer = (reco) ? hgpar_->depth_.size() : hgpar_->layer_.size();
901  for (unsigned k = 0; k < nlayer; ++k) {
902  std::vector<int> ncells = numberCells(((reco) ? hgpar_->depth_[k] : hgpar_->layer_[k]), reco);
903  cells = std::accumulate(ncells.begin(), ncells.end(), cells);
904  }
905  return cells;
906 }
std::vector< int > layer_
std::vector< int > depth_
int numberCells(bool reco) const
fixed size matrix
const HGCalParameters * hgpar_
std::vector< int > HGCalDDDConstants::numberCells ( int  lay,
bool  reco 
) const

Definition at line 908 of file HGCalDDDConstants.cc.

References HGCalParameters::cellCoarseX_, HGCalParameters::cellFineX_, HGCalParameters::defineFull_, HGCalParameters::firstModule_, getIndex(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, HGCSiliconDetId::HGCalFine, hgpar_, mps_fire::i, dqmdumpme::k, mode_, numberCellsHexagon(), HGCalParameters::scintCells(), HGCalGeometryMode::Trapezoid, HGCalParameters::waferCopy_, waferInLayerTest(), HGCalParameters::waferTypeT_, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

908  {
909  const auto& index = getIndex(lay, reco);
910  int i = index.first;
911  std::vector<int> ncell;
912  if (i >= 0) {
914  for (unsigned int k = 0; k < hgpar_->waferTypeT_.size(); ++k) {
915  if (waferInLayerTest(k, i, hgpar_->defineFull_)) {
916  unsigned int cell = (hgpar_->waferTypeT_[k] - 1 == HGCSiliconDetId::HGCalFine)
917  ? (hgpar_->cellFineX_.size())
918  : (hgpar_->cellCoarseX_.size());
919  ncell.emplace_back((int)(cell));
920  }
921  }
922  } else if (mode_ == HGCalGeometryMode::Trapezoid) {
923  int nphi = hgpar_->scintCells(lay);
924  for (int k = hgpar_->firstModule_[i]; k <= hgpar_->lastModule_[i]; ++k)
925  ncell.emplace_back(nphi);
926  } else {
927  for (unsigned int k = 0; k < hgpar_->waferCopy_.size(); ++k) {
928  if (waferInLayerTest(k, index.first, hgpar_->defineFull_)) {
929  int cell = numberCellsHexagon(lay,
932  true);
933  ncell.emplace_back(cell);
934  }
935  }
936  }
937  }
938  return ncell;
939 }
static int32_t waferV(const int32_t index)
bool waferInLayerTest(int wafer, int lay, bool full) const
HGCalGeometryMode::GeometryMode mode_
std::vector< double > cellCoarseX_
std::vector< int > firstModule_
int numberCellsHexagon(int wafer) const
std::pair< int, float > getIndex(int lay, bool reco) const
int scintCells(const int layer) const
static int32_t waferU(const int32_t index)
std::vector< double > cellFineX_
fixed size matrix
std::vector< int > waferCopy_
std::vector< int > waferTypeT_
const HGCalParameters * hgpar_
int HGCalDDDConstants::numberCellsHexagon ( int  wafer) const

Definition at line 941 of file HGCalDDDConstants.cc.

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

Referenced by HGCalTriggerGeometryHexImp1::fillMaps(), minSlope(), HGCalGeometry::newCell(), and numberCells().

941  {
942  if (wafer >= 0 && wafer < (int)(hgpar_->waferTypeT_.size())) {
943  if (hgpar_->waferTypeT_[wafer] - 1 == HGCSiliconDetId::HGCalFine)
944  return (int)(hgpar_->cellFineX_.size());
945  else
946  return (int)(hgpar_->cellCoarseX_.size());
947  } else {
948  return 0;
949  }
950 }
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 952 of file HGCalDDDConstants.cc.

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

952  {
953  auto itr = hgpar_->typesInLayers_.find(HGCalWaferIndex::waferIndex(lay, waferU, waferV));
954  int type =
955  ((itr == hgpar_->typesInLayers_.end()) ? HGCSiliconDetId::HGCalCoarseThick : hgpar_->waferTypeL_[itr->second]);
956  int N = (type == 0) ? hgpar_->nCellsFine_ : hgpar_->nCellsCoarse_;
957  if (flag)
958  return (3 * N * N);
959  else
960  return N;
961 }
type
Definition: HCALResponse.h:21
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
#define N
Definition: blowfish.cc:9
wafer_map typesInLayers_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
std::pair< double, double > HGCalDDDConstants::rangeR ( double  z,
bool  reco 
) const

Definition at line 963 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_, HGCalParameters::zLayerHex_, and geometryCSVtoXML::zz.

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

963  {
964  double rmin(0), rmax(0), zz(0);
965  if (hgpar_->detectorType_ > 0) {
966  zz = (reco ? std::abs(z) : HGCalParameters::k_ScaleFromDDD * std::abs(z));
967  if (hgpar_->detectorType_ <= 2) {
969  } else {
970  rmin = HGCalGeomTools::radius(
972  }
973  if ((hgpar_->detectorType_ == 2) && (zz >= hgpar_->zLayerHex_[hgpar_->firstMixedLayer_ - 1])) {
974  rmax = HGCalGeomTools::radius(
976  } else {
978  }
979  }
980  if (!reco) {
983  }
984 #ifdef EDM_ML_DEBUG
985  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants:rangeR: " << z << ":" << zz << " R " << rmin << ":" << rmax;
986 #endif
987  return std::make_pair(rmin, rmax);
988 }
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_
std::vector< double > radiusMixBoundary_
static double k_ScaleToDDD
std::vector< double > rMinFront_
fixed size matrix
std::vector< double > zFrontTop_
const HGCalParameters * hgpar_
std::pair< double, double > HGCalDDDConstants::rangeZ ( bool  reco) const

Definition at line 990 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::waferThick_, HGCalParameters::zLayerHex_, SiStripMonitorCluster_cfi::zmax, and SiStripMonitorCluster_cfi::zmin.

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

990  {
991  double zmin = (hgpar_->zLayerHex_[0] - hgpar_->waferThick_);
992  double zmax = (hgpar_->zLayerHex_[hgpar_->zLayerHex_.size() - 1] + hgpar_->waferThick_);
993 #ifdef EDM_ML_DEBUG
994  edm::LogVerbatim("HGCalGeom") << "HGCalDDDConstants:rangeZ: " << zmin << ":" << zmax << ":" << hgpar_->waferThick_;
995 #endif
996  if (!reco) {
999  }
1000  return std::make_pair(zmin, zmax);
1001 }
std::vector< double > zLayerHex_
static double k_ScaleToDDD
fixed size matrix
const HGCalParameters * hgpar_
std::pair< int, int > HGCalDDDConstants::rowColumnWafer ( const int  wafer) const

Definition at line 1003 of file HGCalDDDConstants.cc.

References cuy::col, filterCSVwithJSON::copy, hgpar_, and HGCalParameters::waferCopy_.

Referenced by minSlope().

1003  {
1004  int row(0), col(0);
1005  if (wafer < (int)(hgpar_->waferCopy_.size())) {
1006  int copy = hgpar_->waferCopy_[wafer];
1007  col = copy % 100;
1008  if ((copy / 10000) % 10 != 0)
1009  col = -col;
1010  row = (copy / 100) % 100;
1011  if ((copy / 100000) % 10 != 0)
1012  row = -row;
1013  }
1014  return std::make_pair(row, col);
1015 }
std::vector< int > waferCopy_
col
Definition: cuy.py:1010
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 1017 of file HGCalDDDConstants.cc.

References LEDCalibrationChannels::depth, getIndex(), HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, hgpar_, mps_fire::i, HGCalParameters::layerGroup_, HGCalParameters::layerGroupM_, HGCalParameters::layerGroupO_, mod(), mode_, findQualityFiles::size, and HGCalParameters::waferTypeL_.

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

1017  {
1019  return std::make_pair(cell, lay);
1020  } else {
1021  const auto& index = getIndex(lay, false);
1022  int i = index.first;
1023  if (i < 0) {
1024  edm::LogWarning("HGCalGeom") << "Wrong Layer # " << lay << " not in the list ***** ERROR *****";
1025  return std::make_pair(-1, -1);
1026  }
1027  if (mod >= (int)(hgpar_->waferTypeL_).size()) {
1028  edm::LogWarning("HGCalGeom") << "Invalid Wafer # " << mod << "should be < " << (hgpar_->waferTypeL_).size()
1029  << " ***** ERROR *****";
1030  return std::make_pair(-1, -1);
1031  }
1032  int depth(-1);
1033  int kx = cell;
1034  int type = hgpar_->waferTypeL_[mod];
1035  if (type == 1) {
1036  depth = hgpar_->layerGroup_[i];
1037  } else if (type == 2) {
1038  depth = hgpar_->layerGroupM_[i];
1039  } else {
1040  depth = hgpar_->layerGroupO_[i];
1041  }
1042  return std::make_pair(kx, depth);
1043  }
1044 }
size
Write out results.
type
Definition: HCALResponse.h:21
std::vector< int > layerGroupM_
HGCalGeometryMode::GeometryMode mode_
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< int > layerGroup_
std::vector< int > layerGroupO_
const HGCalParameters * hgpar_
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
std::vector< int > waferTypeL_
unsigned int HGCalDDDConstants::volumes ( ) const
inline
int HGCalDDDConstants::waferCount ( const int  type) const
inline

Definition at line 136 of file HGCalDDDConstants.h.

References waferMax_.

136 { return ((type == 0) ? waferMax_[2] : waferMax_[3]); }
type
Definition: HCALResponse.h:21
std::array< int, 4 > waferMax_
int HGCalDDDConstants::waferFromCopy ( int  copy) const

Definition at line 1046 of file HGCalDDDConstants.cc.

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

Referenced by HGCNumberingScheme::getUnitID(), and volumes().

1046  {
1047  const int ncopies = hgpar_->waferCopy_.size();
1048  int wafer(ncopies);
1049  bool result(false);
1050  for (int k = 0; k < ncopies; ++k) {
1051  if (copy == hgpar_->waferCopy_[k]) {
1052  wafer = k;
1053  result = true;
1054  break;
1055  }
1056  }
1057  if (!result) {
1058  wafer = -1;
1059 #ifdef EDM_ML_DEBUG
1060  edm::LogVerbatim("HGCalGeom") << "Cannot find " << copy << " in a list of " << ncopies << " members";
1061  for (int k = 0; k < ncopies; ++k)
1062  edm::LogVerbatim("HGCalGeom") << "[" << k << "] " << hgpar_->waferCopy_[k];
1063 #endif
1064  }
1065  return wafer;
1066 }
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 1068 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_, createfilelist::int, dqmdumpme::k, HGCalParameters::k_ScaleFromDDD, rmax_, tan30deg_, HGCalParameters::waferCopy_, HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalParameters::waferTypeT_, x, geometryCSVtoXML::xx, y, and geometryCSVtoXML::yy.

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

1068  {
1069  // Input x, y in Geant4 unit and transformed to CMSSW standard
1072  int size_ = (int)(hgpar_->waferCopy_.size());
1073  wafer = size_;
1074  for (int k = 0; k < size_; ++k) {
1075  double dx = std::abs(xx - hgpar_->waferPosX_[k]);
1076  double dy = std::abs(yy - hgpar_->waferPosY_[k]);
1077  if (dx <= rmax_ && dy <= hexside_) {
1078  if ((dy <= 0.5 * hexside_) || (dx * tan30deg_ <= (hexside_ - dy))) {
1079  wafer = k;
1080  celltyp = hgpar_->waferTypeT_[k];
1081  xx -= hgpar_->waferPosX_[k];
1082  yy -= hgpar_->waferPosY_[k];
1083  break;
1084  }
1085  }
1086  }
1087  if (wafer < size_) {
1088  if (celltyp - 1 == HGCSiliconDetId::HGCalFine)
1089  icell = cellHex(
1091  else
1092  icell = cellHex(xx,
1093  yy,
1096  hgpar_->cellCoarseY_);
1097  } else {
1098  wafer = -1;
1099 #ifdef EDM_ML_DEBUG
1100  edm::LogWarning("HGCalGeom") << "Cannot get wafer type corresponding to " << x << ":" << y << " " << xx << ":"
1101  << yy;
1102 #endif
1103  }
1104 #ifdef EDM_ML_DEBUG
1105  edm::LogVerbatim("HGCalGeom") << "Position " << x << ":" << y << " Wafer " << wafer << ":" << size_ << " XX " << xx
1106  << ":" << yy << " Cell " << icell << " Type " << celltyp;
1107 #endif
1108 }
std::vector< double > waferPosY_
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_
static double k_ScaleFromDDD
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< double > cellFineX_
std::vector< int > waferCopy_
std::vector< int > waferTypeT_
std::vector< double > cellCoarseY_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
static double tan30deg_
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  debug = false 
) const

Definition at line 1110 of file HGCalDDDConstants.cc.

References funct::abs(), cellHex(), HGCalParameters::cellThickness_, PVValHelper::dx, PVValHelper::dy, HGCalParameters::firstLayer_, hexside_, HGCSiliconDetId::HGCalCoarseThick, hgpar_, dqmdumpme::k, HGCalParameters::k_ScaleFromDDD, HGCalParameters::nCellsFine_, rmax_, tan30deg_, HGCalParameters::typesInLayers_, HGCalParameters::waferCopy_, HGCalWaferIndex::waferIndex(), HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, HGCalParameters::waferThick_, HGCalParameters::waferTypeL_, HGCalWaferIndex::waferU(), HGCalParameters::waferUVMax_, HGCalWaferIndex::waferV(), testProducerWithPsetDescEmpty_cfi::x1, HGCalParameters::xLayerHex_, geometryCSVtoXML::xx, testProducerWithPsetDescEmpty_cfi::y1, HGCalParameters::yLayerHex_, and geometryCSVtoXML::yy.

1119  {
1120  int ll = layer - hgpar_->firstLayer_;
1123  waferU = waferV = 1 + hgpar_->waferUVMax_;
1124  for (unsigned int k = 0; k < hgpar_->waferPosX_.size(); ++k) {
1125  double dx = std::abs(xx - hgpar_->waferPosX_[k]);
1126  double dy = std::abs(yy - hgpar_->waferPosY_[k]);
1127  if (dx <= rmax_ && dy <= hexside_) {
1128  if ((dy <= 0.5 * hexside_) || (dx * tan30deg_ <= (hexside_ - dy))) {
1131  auto itr = hgpar_->typesInLayers_.find(HGCalWaferIndex::waferIndex(layer, waferU, waferV));
1132  celltype = ((itr == hgpar_->typesInLayers_.end()) ? HGCSiliconDetId::HGCalCoarseThick
1133  : hgpar_->waferTypeL_[itr->second]);
1134 #ifdef EDM_ML_DEBUG
1135  if (debug)
1136  edm::LogVerbatim("HGCalGeom") << "WaferFromPosition:: Input " << layer << ":" << ll << ":"
1137  << hgpar_->firstLayer_ << ":" << x << ":" << y << ":" << hgpar_->xLayerHex_[ll]
1138  << ":" << hgpar_->yLayerHex_[ll] << ":" << xx << ":" << yy << " compared with "
1139  << hgpar_->waferPosX_[k] << ":" << hgpar_->waferPosY_[k] << " difference " << dx
1140  << ":" << dy << ":" << dx * tan30deg_ << ":" << (hexside_ - dy)
1141  << " comparator " << rmax_ << ":" << hexside_ << " wafer " << waferU << ":"
1142  << waferV << ":" << celltype;
1143 #endif
1144  xx -= hgpar_->waferPosX_[k];
1145  yy -= hgpar_->waferPosY_[k];
1146  break;
1147  }
1148  }
1149  }
1150  if (std::abs(waferU) <= hgpar_->waferUVMax_) {
1151  cellHex(xx, yy, celltype, cellU, cellV, debug);
1152  wt = ((celltype < 2) ? (hgpar_->cellThickness_[celltype] / hgpar_->waferThick_) : 1.0);
1153  } else {
1154  cellU = cellV = 2 * hgpar_->nCellsFine_;
1155  wt = 1.0;
1156  celltype = -1;
1157  }
1158 #ifdef EDM_ML_DEBUG
1159  if (celltype < 0) {
1162  edm::LogVerbatim("HGCalGeom") << "waferFromPosition: Bad type for X " << x << ":" << x1 << ":" << xx << " Y " << y
1163  << ":" << y1 << ":" << yy << " Wafer " << waferU << ":" << waferV << " Cell " << cellU
1164  << ":" << cellV;
1165  for (unsigned int k = 0; k < hgpar_->waferPosX_.size(); ++k) {
1166  double dx = std::abs(x1 - hgpar_->waferPosX_[k]);
1167  double dy = std::abs(y1 - hgpar_->waferPosY_[k]);
1168  edm::LogVerbatim("HGCalGeom") << "Wafer [" << k << "] Position (" << hgpar_->waferPosX_[k] << ", "
1169  << hgpar_->waferPosY_[k] << ") difference " << dx << ":" << dy << ":"
1170  << dx * tan30deg_ << ":" << hexside_ - dy << " Paramerers " << rmax_ << ":"
1171  << hexside_;
1172  }
1173  }
1174 #endif
1175 }
std::vector< double > waferPosY_
static int32_t waferV(const int32_t index)
int cellHex(double xx, double yy, const double &cellR, const std::vector< double > &posX, const std::vector< double > &posY) const
std::vector< double > yLayerHex_
static double k_ScaleFromDDD
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static int32_t waferU(const int32_t index)
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
#define debug
Definition: HDRShower.cc:19
std::vector< double > cellThickness_
wafer_map typesInLayers_
std::vector< int > waferCopy_
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
std::vector< int > waferTypeL_
std::vector< double > xLayerHex_
static double tan30deg_
bool HGCalDDDConstants::waferFullInLayer ( int  wafer,
int  lay,
bool  reco 
) const

Definition at line 1184 of file HGCalDDDConstants.cc.

References getIndex(), and waferInLayerTest().

Referenced by volumes().

1184  {
1185  const auto& indx = getIndex(lay, reco);
1186  if (indx.first < 0)
1187  return false;
1188  return waferInLayerTest(wafer, indx.first, false);
1189 }
bool waferInLayerTest(int wafer, int lay, bool full) const
std::pair< int, float > getIndex(int lay, bool reco) const
fixed size matrix
bool HGCalDDDConstants::waferInLayer ( int  wafer,
int  lay,
bool  reco 
) const

Definition at line 1177 of file HGCalDDDConstants.cc.

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

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

1177  {
1178  const auto& indx = getIndex(lay, reco);
1179  if (indx.first < 0)
1180  return false;
1181  return waferInLayerTest(wafer, indx.first, hgpar_->defineFull_);
1182 }
bool waferInLayerTest(int wafer, int lay, bool full) const
std::pair< int, float > getIndex(int lay, bool reco) const
fixed size matrix
const HGCalParameters * hgpar_
bool HGCalDDDConstants::waferInLayerTest ( int  wafer,
int  lay,
bool  full 
) const
private

Definition at line 1443 of file HGCalDDDConstants.cc.

References distTCMET_cfi::corner, RemoveAddSevLevel::flag, HGCalGeometryMode::Hexagon, HGCalGeometryMode::HexagonFull, hexside_, hgpar_, recoMuon::in, HGCalParameters::k_CornerSize, mode_, rmax_, HGCalParameters::rMaxLayHex_, HGCalParameters::rMinLayHex_, HGCalGeomTools::waferCorner(), HGCalParameters::waferPosX_, and HGCalParameters::waferPosY_.

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

1443  {
1444  bool flag = ((mode_ == HGCalGeometryMode::Hexagon) || (mode_ == HGCalGeometryMode::HexagonFull)) ? true : false;
1445  std::pair<int, int> corner = HGCalGeomTools::waferCorner(hgpar_->waferPosX_[wafer],
1446  hgpar_->waferPosY_[wafer],
1447  rmax_,
1448  hexside_,
1449  hgpar_->rMinLayHex_[lay],
1450  hgpar_->rMaxLayHex_[lay],
1451  flag);
1452  bool in = (full ? (corner.first > 0) : (corner.first == (int)(HGCalParameters::k_CornerSize)));
1453 #ifdef EDM_ML_DEBUG
1454  edm::LogVerbatim("HGCalGeom") << "WaferInLayerTest: Layer " << lay << " wafer " << wafer << " R-limits "
1455  << hgpar_->rMinLayHex_[lay] << ":" << hgpar_->rMaxLayHex_[lay] << " Corners "
1456  << corner.first << ":" << corner.second << " In " << in;
1457 #endif
1458  return in;
1459 }
std::vector< double > waferPosY_
HGCalGeometryMode::GeometryMode mode_
static std::pair< int32_t, int32_t > waferCorner(double xpos, double ypos, double r, double R, double rMin, double rMax, bool oldBug=false)
Definition: GenABIO.cc:168
std::vector< double > rMinLayHex_
std::vector< double > rMaxLayHex_
static uint32_t k_CornerSize
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
int HGCalDDDConstants::waferMax ( ) const
inline

Definition at line 137 of file HGCalDDDConstants.h.

References waferMax_.

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

Definition at line 138 of file HGCalDDDConstants.h.

References debug, waferMax_, and waferPosition().

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

Definition at line 1191 of file HGCalDDDConstants.cc.

References hgpar_, HGCalParameters::k_ScaleToDDD, HGCalParameters::waferPosX_, HGCalParameters::waferPosY_, geometryCSVtoXML::xx, and geometryCSVtoXML::yy.

Referenced by HGCalGeometryLoader::build(), HGCMouseBite::exclude(), isValidCell8(), locateCell(), waferMin(), waferPosition(), and waferUVMax().

1191  {
1192  double xx(0), yy(0);
1193  if (wafer >= 0 && wafer < (int)(hgpar_->waferPosX_.size())) {
1194  xx = hgpar_->waferPosX_[wafer];
1195  yy = hgpar_->waferPosY_[wafer];
1196  }
1197  if (!reco) {
1200  }
1201  return std::make_pair(xx, yy);
1202 }
std::vector< double > waferPosY_
static double k_ScaleToDDD
fixed size matrix
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 1204 of file HGCalDDDConstants.cc.

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

1205  {
1206  int ll = lay - hgpar_->firstLayer_;
1207  double x = hgpar_->xLayerHex_[ll];
1208  double y = hgpar_->yLayerHex_[ll];
1209  if (debug)
1210  edm::LogVerbatim("HGCalGeom") << "Layer " << lay << ":" << ll << " Shift " << hgpar_->xLayerHex_[ll] << ":"
1211  << hgpar_->yLayerHex_[ll];
1212  if (!reco) {
1215  }
1216 
1217  const auto& xy = waferPosition(waferU, waferV, reco);
1218  x += xy.first;
1219  y += xy.second;
1220  if (debug)
1221  edm::LogVerbatim("HGCalGeom") << "With wafer " << x << ":" << y << ":" << xy.first << ":" << xy.second;
1222  return std::make_pair(x, y);
1223 }
std::vector< double > yLayerHex_
#define debug
Definition: HDRShower.cc:19
static double k_ScaleToDDD
fixed size matrix
std::pair< double, double > waferPosition(int wafer, bool reco) const
const HGCalParameters * hgpar_
std::vector< double > xLayerHex_
std::pair< double, double > HGCalDDDConstants::waferPosition ( int  waferU,
int  waferV,
bool  reco 
) const
private

Definition at line 1461 of file HGCalDDDConstants.cc.

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

1461  {
1462  double xx(0), yy(0);
1463  int indx = HGCalWaferIndex::waferIndex(0, waferU, waferV);
1464  auto itr = hgpar_->wafersInLayers_.find(indx);
1465  if (itr != hgpar_->wafersInLayers_.end()) {
1466  xx = hgpar_->waferPosX_[itr->second];
1467  yy = hgpar_->waferPosY_[itr->second];
1468  }
1469  if (!reco) {
1472  }
1473  return std::make_pair(xx, yy);
1474 }
std::vector< double > waferPosY_
wafer_map wafersInLayers_
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
static double k_ScaleToDDD
fixed size matrix
const HGCalParameters * hgpar_
std::vector< double > waferPosX_
int HGCalDDDConstants::wafers ( ) const

Definition at line 1268 of file HGCalDDDConstants.cc.

References HGCalParameters::depth_, hgpar_, mps_fire::i, createfilelist::int, layers(), mode_, HGCalParameters::moduleLayR_, modules(), and HGCalGeometryMode::Trapezoid.

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

1268  {
1269  int wafer(0);
1271  for (unsigned int i = 0; i < layers(true); ++i) {
1272  int lay = hgpar_->depth_[i];
1273  wafer += modules(lay, true);
1274  }
1275  } else {
1276  wafer = (int)(hgpar_->moduleLayR_.size());
1277  }
1278  return wafer;
1279 }
std::vector< int > depth_
std::vector< int > moduleLayR_
HGCalGeometryMode::GeometryMode mode_
int modules(int lay, bool reco) const
unsigned int layers(bool reco) const
const HGCalParameters * hgpar_
int HGCalDDDConstants::wafers ( int  layer,
int  type 
) const

Definition at line 1281 of file HGCalDDDConstants.cc.

References HGCalParameters::firstModule_, getIndex(), hgpar_, HGCalParameters::lastModule_, mode_, HGCalGeometryMode::Trapezoid, and waferLayer_.

1281  {
1282  int wafer(0);
1284  auto itr = waferLayer_.find(layer);
1285  if (itr != waferLayer_.end()) {
1286  unsigned ity = (type > 0 && type <= 2) ? type : 0;
1287  wafer = (itr->second)[ity];
1288  }
1289  } else {
1290  const auto& index = getIndex(layer, true);
1291  wafer = 1 + hgpar_->lastModule_[index.first] - hgpar_->firstModule_[index.first];
1292  }
1293  return wafer;
1294 }
type
Definition: HCALResponse.h:21
HGCalGeometryMode::GeometryMode mode_
std::map< int, HGCWaferParam > waferLayer_
std::vector< int > firstModule_
std::pair< int, float > getIndex(int lay, bool reco) const
std::vector< int > lastModule_
const HGCalParameters * hgpar_
double HGCalDDDConstants::waferSepar ( bool  reco) const
inline

Definition at line 141 of file HGCalDDDConstants.h.

References hgpar_, HGCalParameters::k_ScaleToDDD, and HGCalParameters::sensorSeparation_.

141  {
143  }
static double k_ScaleToDDD
fixed size matrix
const HGCalParameters * hgpar_
double HGCalDDDConstants::waferSize ( bool  reco) const
inline
int HGCalDDDConstants::waferToCopy ( int  wafer) const
inline

Definition at line 149 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferCopy_.

149  {
150  return ((wafer >= 0) && (wafer < (int)(hgpar_->waferCopy_.size()))) ? hgpar_->waferCopy_[wafer]
151  : (int)(hgpar_->waferCopy_.size());
152  }
std::vector< int > waferCopy_
const HGCalParameters * hgpar_
int HGCalDDDConstants::waferType ( DetId const &  id) const

Definition at line 1225 of file HGCalDDDConstants.cc.

References DetId::Forward, HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, mode_, HFNoseDetId::type(), HGCSiliconDetId::type(), and waferTypeL().

Referenced by hgc_digi_utils::addCellMetadata(), assignCellHex(), cellThickness(), getUVMax(), and HGCalUncalibRecHitRecWeightsAlgo< HGCDataFrame >::makeRecHit().

1225  {
1226  int type(1);
1228  type = ((id.det() != DetId::Forward) ? HGCSiliconDetId(id).type() : HFNoseDetId(id).type());
1230  type = waferTypeL(HGCalDetId(id).wafer()) - 1;
1231  }
1232  return type;
1233 }
type
Definition: HCALResponse.h:21
int type() const
get the type
Definition: HFNoseDetId.h:49
HGCalGeometryMode::GeometryMode mode_
int type() const
get the type
int waferTypeL(int wafer) const
int HGCalDDDConstants::waferType ( int  layer,
int  waferU,
int  waferV 
) const

Definition at line 1235 of file HGCalDDDConstants.cc.

References HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, HGCSiliconDetId::HGCalCoarseThick, hgpar_, createfilelist::int, mode_, HGCalParameters::typesInLayers_, HGCalWaferIndex::waferIndex(), and HGCalParameters::waferTypeL_.

1235  {
1238  auto itr = hgpar_->typesInLayers_.find(HGCalWaferIndex::waferIndex(layer, waferU, waferV));
1239  if (itr != hgpar_->typesInLayers_.end())
1240  type = hgpar_->waferTypeL_[itr->second];
1242  if ((waferU >= 0) && (waferU < (int)(hgpar_->waferTypeL_.size())))
1243  type = (hgpar_->waferTypeL_[waferU] - 1);
1244  }
1245  return type;
1246 }
type
Definition: HCALResponse.h:21
HGCalGeometryMode::GeometryMode mode_
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
wafer_map typesInLayers_
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
int HGCalDDDConstants::waferTypeL ( int  wafer) const
inline

Definition at line 158 of file HGCalDDDConstants.h.

References hgpar_, and HGCalParameters::waferTypeL_.

Referenced by HGCalTBAnalyzer::analyzeRecHits(), HGCalTriggerTools::sensorCellThicknessV8(), and waferType().

158  {
159  return ((wafer >= 0) && (wafer < (int)(hgpar_->waferTypeL_.size()))) ? hgpar_->waferTypeL_[wafer] : 0;
160  }
const HGCalParameters * hgpar_
std::vector< int > waferTypeL_
int HGCalDDDConstants::waferTypeT ( int  wafer) const
inline
int HGCalDDDConstants::waferUVMax ( ) const
inline
bool HGCalDDDConstants::waferVirtual ( int  layer,
int  waferU,
int  waferV 
) const

Definition at line 1248 of file HGCalDDDConstants.cc.

References HGCalGeometryMode::Hexagon, HGCalGeometryMode::Hexagon8, HGCalGeometryMode::Hexagon8Full, HGCalGeometryMode::HexagonFull, hgpar_, mode_, HGCalWaferIndex::waferIndex(), HGCalParameters::waferTypes_, and LaserClient_cfi::wl.

Referenced by waferUVMax().

1248  {
1249  bool type(false);
1251  int wl = HGCalWaferIndex::waferIndex(layer, waferU, waferV, false);
1252  type = (hgpar_->waferTypes_.find(wl) != hgpar_->waferTypes_.end());
1254  int wl = HGCalWaferIndex::waferIndex(layer, waferU, 0, true);
1255  type = (hgpar_->waferTypes_.find(wl) != hgpar_->waferTypes_.end());
1256  }
1257  return type;
1258 }
type
Definition: HCALResponse.h:21
HGCalGeometryMode::GeometryMode mode_
static int32_t waferIndex(int32_t layer, int32_t waferU, int32_t waferV, bool old=false)
waferT_map waferTypes_
const HGCalParameters * hgpar_
double HGCalDDDConstants::waferZ ( int  layer,
bool  reco 
) const

Member Data Documentation

const float HGCalDDDConstants::dPhiMin = 0.02
private

Definition at line 181 of file HGCalDDDConstants.h.

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

Definition at line 180 of file HGCalDDDConstants.h.

Simrecovecs HGCalDDDConstants::max_modules_layer_
private

Definition at line 191 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and modules().

int32_t HGCalDDDConstants::maxWafersPerLayer_
private

Definition at line 192 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and maxModulesPerLayer().

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

Definition at line 189 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and maxModules().

double HGCalDDDConstants::rmax_
private
const double HGCalDDDConstants::sqrt3_
private

Definition at line 186 of file HGCalDDDConstants.h.

Referenced by cellHex(), and distFromEdgeHex().

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

Definition at line 190 of file HGCalDDDConstants.h.

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

int32_t HGCalDDDConstants::tot_wafers_
private

Definition at line 189 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants().

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

Definition at line 195 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and isValidHex8().

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

Definition at line 193 of file HGCalDDDConstants.h.

Referenced by HGCalDDDConstants(), and wafers().

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

Definition at line 194 of file HGCalDDDConstants.h.

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