CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes
HGCalTopology Class Reference

#include <HGCalTopology.h>

Inheritance diagram for HGCalTopology:
CaloSubdetectorTopology

Classes

struct  DecodedDetId
 

Public Member Functions

unsigned int allGeomModules () const
 
const HGCalDDDConstantsdddConstants () const
 
DecodedDetId decode (const DetId &id) const
 
DetId denseId2detId (uint32_t denseId) const override
 
DetId::Detector detector () const
 
bool detectorType () const
 
virtual uint32_t detId2denseGeomId (const DetId &id) const
 
uint32_t detId2denseId (const DetId &id) const override
 Dense indexing. More...
 
std::vector< DetIddown (const DetId &id) const override
 
std::vector< DetIdeast (const DetId &id) const override
 
DetId encode (const DecodedDetId &id_) const
 
DecodedDetId geomDenseId2decId (const uint32_t &hi) const
 
HGCalGeometryMode::GeometryMode geomMode () const
 Geometry mode. More...
 
DetId goEast (const DetId &id) const override
 move the Topology east (positive ix) More...
 
DetId goNorth (const DetId &id) const override
 move the Topology north (increment iy) More...
 
DetId goSouth (const DetId &id) const override
 move the Topology south (decrement iy) More...
 
DetId goWest (const DetId &id) const override
 move the Topology west (negative ix) More...
 
 HGCalTopology (const HGCalDDDConstants &hdcons, int subdet)
 create a new Topology More...
 
bool isHFNose () const
 
bool maskCell (const DetId &id, int corners=3) const
 
std::vector< DetIdneighbors (const DetId &id) const
 
std::vector< DetIdnorth (const DetId &id) const override
 
DetId offsetBy (const DetId startId, int nrStepsX, int nrStepsY) const
 
std::vector< DetIdsouth (const DetId &id) const override
 
ForwardSubdetector subDetector () const
 
DetId switchZSide (const DetId startId) const
 
bool tileTrapezoid () const
 
unsigned int totalGeomModules () const
 
unsigned int totalModules () const
 
std::vector< DetIdup (const DetId &id) const override
 
bool valid (const DetId &id) const override
 Is this a valid cell id. More...
 
bool valid (const DetId &id, int cornerMin) const
 
bool validHashIndex (uint32_t ix) const
 
bool validModule (const DetId &id, int cornerMin) const
 
bool waferHexagon6 () const
 
bool waferHexagon8 () const
 
std::vector< DetIdwest (const DetId &id) const override
 
 ~HGCalTopology () override
 virtual destructor More...
 
- Public Member Functions inherited from CaloSubdetectorTopology
 CaloSubdetectorTopology ()
 standard constructor More...
 
virtual DetId denseId2detId (unsigned int) const
 return a linear packed id More...
 
virtual bool denseIdConsistent (int topoVer) const
 return whether this topology is consistent with the numbering in the given topology More...
 
virtual std::vector< DetIdgetAllNeighbours (const DetId &id) const
 
virtual std::vector< DetIdgetNeighbours (const DetId &id, const CaloDirection &dir) const
 
virtual std::vector< DetIdgetWindow (const DetId &id, const int &northSouthSize, const int &eastWestSize) const
 
virtual DetId goDown (const DetId &id) const
 
virtual DetId goUp (const DetId &id) const
 
virtual unsigned int ncells () const
 return a count of valid cells (for dense indexing use) More...
 
virtual int topoVersion () const
 return a version which identifies the given topology More...
 
virtual ~CaloSubdetectorTopology ()
 virtual destructor More...
 

Static Public Attributes

static const int subSectors_ = 2
 Use subSector in square mode as wafer type in hexagon mode. More...
 

Private Member Functions

void addHGCSCintillatorId (std::vector< DetId > &ids, int zside, int type, int lay, int iradius, int iphi) const
 add DetId of Scintillator and Silicon type if valid More...
 
void addHGCSiliconId (std::vector< DetId > &ids, int det, int zside, int type, int lay, int waferU, int waferV, int cellU, int cellV) const
 
DetId changeXY (const DetId &id, int nrStepsX, int nrStepsY) const
 move the nagivator along x, y More...
 
DetId changeZ (const DetId &id, int nrStepsZ) const
 move the nagivator along z More...
 

Private Attributes

int cellMax_
 
int cells_
 
DetId::Detector det_
 
int firstLay_
 
const HGCalDDDConstantshdcons_
 
int kHGeomHalf_
 
int kHGhalf_
 
int kHGhalfType_
 
unsigned int kSizeForDenseIndexing
 
int layers_
 
HGCalGeometryMode::GeometryMode mode_
 
int sectors_
 
ForwardSubdetector subdet_
 
int types_
 
int waferMax_
 
int waferOff_
 

Additional Inherited Members

- Protected Types inherited from CaloSubdetectorTopology
typedef std::pair< int, int > Coordinate
 
- Protected Member Functions inherited from CaloSubdetectorTopology
Coordinate getNeighbourIndex (const Coordinate &coord, const CaloDirection &dir) const
 

Detailed Description

Definition at line 12 of file HGCalTopology.h.

Constructor & Destructor Documentation

◆ HGCalTopology()

HGCalTopology::HGCalTopology ( const HGCalDDDConstants hdcons,
int  subdet 
)

create a new Topology

Definition at line 12 of file HGCalTopology.cc.

12  : hdcons_(hdcons) {
14  layers_ = hdcons_.layers(true);
15  cells_ = hdcons_.maxCells(true);
19  waferMax_ = 2 * waferOff_ + 1;
22  if (waferHexagon6()) {
24  subdet_ = (ForwardSubdetector)(det);
26  types_ = 2;
27  } else if (det == (int)(DetId::Forward)) {
29  subdet_ = HFNose;
31  types_ = 3;
32  } else if (tileTrapezoid()) {
33  det_ = (DetId::Detector)(det);
36  types_ = 3;
37  } else {
38  det_ = (DetId::Detector)(det);
41  types_ = 3;
42  }
44  kSizeForDenseIndexing = static_cast<unsigned int>(2 * kHGhalf_);
45 #ifdef EDM_ML_DEBUG
46  edm::LogVerbatim("HGCalGeom") << "HGCalTopology initialized for detector " << det << ":" << det_ << ":" << subdet_
47  << " having " << sectors_ << " Sectors, " << layers_ << " Layers from " << firstLay_
48  << ", " << cells_ << " cells and total channels " << kSizeForDenseIndexing << ":"
49  << (2 * kHGeomHalf_);
50 #endif
51 }

References cellMax_, cells_, det_, firstLay_, HGCalDDDConstants::firstLayer(), DetId::Forward, ForwardEmpty, HGCalDDDConstants::geomMode(), hdcons_, HFNose, kHGeomHalf_, kHGhalf_, kHGhalfType_, kSizeForDenseIndexing, HGCalDDDConstants::layers(), layers_, HGCalDDDConstants::maxCells(), HGCalDDDConstants::maxCellUV(), mode_, HGCalDDDConstants::sectors(), sectors_, subdet_, tileTrapezoid(), types_, waferHexagon6(), waferMax_, waferOff_, and HGCalDDDConstants::waferUVMax().

◆ ~HGCalTopology()

HGCalTopology::~HGCalTopology ( )
inlineoverride

virtual destructor

Definition at line 18 of file HGCalTopology.h.

18 {}

Member Function Documentation

◆ addHGCSCintillatorId()

void HGCalTopology::addHGCSCintillatorId ( std::vector< DetId > &  ids,
int  zside,
int  type,
int  lay,
int  iradius,
int  iphi 
) const
private

add DetId of Scintillator and Silicon type if valid

Definition at line 564 of file HGCalTopology.cc.

565  {
566 #ifdef EDM_ML_DEBUG
567  edm::LogVerbatim("HGCalGeom") << "addHGCSCintillatorId " << zside << ":" << type << ":" << lay << ":" << iradius
568  << ":" << iphi << " ==> Validity " << hdcons_.isValidTrap(lay, iradius, iphi);
569 #endif
570  if (hdcons_.isValidTrap(lay, iradius, iphi)) {
571  HGCScintillatorDetId id(type, lay, zside * iradius, iphi);
572  ids.emplace_back(DetId(id));
573  }
574 }

References hdcons_, triggerObjects_cff::id, LEDCalibrationChannels::iphi, HGCalDDDConstants::isValidTrap(), and ecaldqm::zside().

Referenced by neighbors().

◆ addHGCSiliconId()

void HGCalTopology::addHGCSiliconId ( std::vector< DetId > &  ids,
int  det,
int  zside,
int  type,
int  lay,
int  waferU,
int  waferV,
int  cellU,
int  cellV 
) const
private

Definition at line 576 of file HGCalTopology.cc.

577  {
578 #ifdef EDM_ML_DEBUG
579  edm::LogVerbatim("HGCalGeom") << "addHGCSiliconId " << det << ":" << zside << ":" << type << ":" << lay << ":"
580  << waferU << ":" << waferV << ":" << cellU << ":" << cellV << " ==> Validity "
581  << hdcons_.isValidHex8(lay, waferU, waferV, cellU, cellV);
582 #endif
583  if (hdcons_.isValidHex8(lay, waferU, waferV, cellU, cellV)) {
584  HGCSiliconDetId id((DetId::Detector)(det), zside, type, lay, waferU, waferV, cellU, cellV);
585  ids.emplace_back(DetId(id));
586  }
587 }

References hdcons_, triggerObjects_cff::id, HGCalDDDConstants::isValidHex8(), HGCalWaferIndex::waferU(), HGCalWaferIndex::waferV(), and ecaldqm::zside().

Referenced by neighbors().

◆ allGeomModules()

unsigned int HGCalTopology::allGeomModules ( ) const

Definition at line 53 of file HGCalTopology.cc.

53  {
54  return (tileTrapezoid() ? (unsigned int)(2 * hdcons_.numberCells(true)) : (unsigned int)(2 * hdcons_.wafers()));
55 }

References hdcons_, HGCalDDDConstants::numberCells(), tileTrapezoid(), and HGCalDDDConstants::wafers().

Referenced by HGCalGeometryLoader::build().

◆ changeXY()

DetId HGCalTopology::changeXY ( const DetId id,
int  nrStepsX,
int  nrStepsY 
) const
private

move the nagivator along x, y

Definition at line 663 of file HGCalTopology.cc.

663 { return DetId(); }

Referenced by goEast(), goNorth(), goSouth(), goWest(), and offsetBy().

◆ changeZ()

DetId HGCalTopology::changeZ ( const DetId id,
int  nrStepsZ 
) const
private

move the nagivator along z

Definition at line 665 of file HGCalTopology.cc.

665 { return DetId(); }

Referenced by down(), and up().

◆ dddConstants()

const HGCalDDDConstants& HGCalTopology::dddConstants ( ) const
inline

◆ decode()

HGCalTopology::DecodedDetId HGCalTopology::decode ( const DetId id) const

Definition at line 589 of file HGCalTopology.cc.

589  {
591  if (waferHexagon6()) {
592  HGCalDetId id(startId);
593  idx.iCell1 = id.cell();
594  idx.iCell2 = 0;
595  idx.iLay = id.layer();
596  idx.iSec1 = id.wafer();
597  idx.iSec2 = 0;
598  idx.iType = id.waferType();
599  idx.zSide = id.zside();
600  idx.det = id.subdetId();
601  } else if (tileTrapezoid()) {
602  HGCScintillatorDetId id(startId);
603  idx.iCell1 = id.iphi();
604  idx.iCell2 = 0;
605  idx.iLay = id.layer();
606  idx.iSec1 = id.ietaAbs();
607  idx.iSec2 = 0;
608  idx.iType = id.type();
609  idx.zSide = id.zside();
610  idx.det = (int)(id.subdet());
612  HFNoseDetId id(startId);
613  idx.iCell1 = id.cellU();
614  idx.iCell2 = id.cellV();
615  idx.iLay = id.layer();
616  idx.iSec1 = id.waferU();
617  idx.iSec2 = id.waferV();
618  idx.iType = id.type();
619  idx.zSide = id.zside();
620  idx.det = (int)(id.subdet());
621  } else {
622  HGCSiliconDetId id(startId);
623  idx.iCell1 = id.cellU();
624  idx.iCell2 = id.cellV();
625  idx.iLay = id.layer();
626  idx.iSec1 = id.waferU();
627  idx.iSec2 = id.waferV();
628  idx.iType = id.type();
629  idx.zSide = id.zside();
630  idx.det = (int)(id.subdet());
631  }
632  return idx;
633 }

References det_, DetId::Forward, HFNose, triggerObjects_cff::id, heavyIonCSV_trainingSettings::idx, createfilelist::int, subdet_, tileTrapezoid(), and waferHexagon6().

Referenced by detId2denseGeomId(), detId2denseId(), HGCalGeometry::get8Corners(), HGCalGeometry::getClosestCell(), HGCalGeometry::getCorners(), HGCalGeometry::getNewCorners(), HGCalGeometry::getPosition(), neighbors(), HGCalGeometry::neighborZ(), HGCalGeometry::newCell(), switchZSide(), valid(), and validModule().

◆ denseId2detId()

DetId HGCalTopology::denseId2detId ( uint32_t  denseId) const
override

Definition at line 388 of file HGCalTopology.cc.

388  {
390  if (validHashIndex(hi)) {
391  id.zSide = ((int)(hi) < kHGhalfType_ ? -1 : 1);
392  int di = ((int)(hi) % kHGhalfType_);
393  if (waferHexagon6()) {
394  int type = (di % types_);
395  id.iType = (type == 0 ? -1 : 1);
396  id.iSec1 = (((di - type) / types_) % sectors_);
397  id.iLay = (((((di - type) / types_) - id.iSec1 + 1) / sectors_) % layers_ + 1);
398  id.iCell1 = (((((di - type) / types_) - id.iSec1 + 1) / sectors_ - id.iLay + 1) / layers_ + 1);
399 #ifdef EDM_ML_DEBUG
400  edm::LogVerbatim("HGCalGeom") << "Input Hex " << hi << " o/p " << id.zSide << ":" << id.iLay << ":" << id.iType
401  << ":" << id.iSec1 << ":" << id.iCell1;
402 #endif
403  } else if (tileTrapezoid()) {
404  int type = (di % types_);
405  id.iType = type;
406  id.iSec1 = (((di - type) / types_) % sectors_) + 1;
407  id.iLay = (((((di - type) / types_) - id.iSec1 + 1) / sectors_) % layers_ + firstLay_);
408  id.iCell1 = (((((di - type) / types_) - id.iSec1 + 1) / sectors_ - id.iLay + firstLay_) / layers_ + 1);
409 #ifdef EDM_ML_DEBUG
410  edm::LogVerbatim("HGCalGeom") << "Input Trap " << hi << " o/p " << id.zSide << ":" << id.iLay << ":" << id.iType
411  << ":" << id.iSec1 << ":" << id.iCell1;
412 #endif
413  } else {
414  int type = (di % types_);
415  id.iType = type;
416  di = (di - type) / types_;
417  id.iSec2 = (di % waferMax_) - waferOff_;
418  di = (di - id.iSec2 - waferOff_) / waferMax_;
419  id.iSec1 = (di % waferMax_) - waferOff_;
420  di = (di - id.iSec1 - waferOff_) / waferMax_;
421  id.iLay = (di % layers_) + 1;
422  di = (di - id.iLay + 1) / layers_;
423  id.iCell2 = (di % cellMax_);
424  id.iCell1 = (di - id.iCell2) / cellMax_;
425 #ifdef EDM_ML_DEBUG
426  edm::LogVerbatim("HGCalGeom") << "Input Hex8 " << hi << " o/p " << id.zSide << ":" << id.iLay << ":" << id.iType
427  << ":" << id.iSec1 << ":" << id.iSec2 << ":" << id.iCell1 << ":" << id.iCell2;
428 #endif
429  }
430  }
431  return encode(id);
432 }

References cellMax_, encode(), firstLay_, triggerObjects_cff::id, createfilelist::int, kHGhalfType_, layers_, sectors_, tileTrapezoid(), types_, validHashIndex(), waferHexagon6(), waferMax_, and waferOff_.

◆ detector()

DetId::Detector HGCalTopology::detector ( ) const
inline

Definition at line 117 of file HGCalTopology.h.

117 { return det_; }

References det_.

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

◆ detectorType()

bool HGCalTopology::detectorType ( ) const
inline

Definition at line 119 of file HGCalTopology.h.

119 { return false; }

Referenced by HGCalHitValidation::analyzeHGCalSimHit(), and HGCalTriggerTools::simToReco().

◆ detId2denseGeomId()

uint32_t HGCalTopology::detId2denseGeomId ( const DetId id) const
virtual

Definition at line 434 of file HGCalTopology.cc.

434  {
436  uint32_t idx;
437  if (waferHexagon6()) {
438  idx = (uint32_t)(((id.zSide > 0) ? kHGeomHalf_ : 0) + (id.iLay - 1) * sectors_ + id.iSec1);
439 #ifdef EDM_ML_DEBUG
440  edm::LogVerbatim("HGCalGeom") << "Geom Hex I/P " << id.zSide << ":" << id.iLay << ":" << id.iSec1 << ":" << id.iType
441  << " Constants " << kHGeomHalf_ << ":" << layers_ << ":" << sectors_ << " o/p "
442  << idx;
443 #endif
444  } else if (tileTrapezoid()) {
445  idx = (uint32_t)(((id.zSide > 0) ? kHGeomHalf_ : 0) +
446  (((id.iLay - firstLay_) * sectors_ + id.iSec1 - 1) * cellMax_ + id.iCell1 - 1));
447 #ifdef EDM_ML_DEBUG
448  edm::LogVerbatim("HGCalGeom") << "Geom Trap I/P " << id.zSide << ":" << id.iLay << ":" << id.iSec1 << ":"
449  << id.iCell1 << ":" << id.iType << " Constants " << kHGeomHalf_ << ":" << layers_
450  << ":" << firstLay_ << ":" << sectors_ << ":" << cellMax_ << " o/p " << idx;
451 #endif
452  } else {
453  idx = (uint32_t)(((id.zSide > 0) ? kHGeomHalf_ : 0) +
454  (((id.iLay - 1) * waferMax_ + id.iSec1 + waferOff_) * waferMax_ + id.iSec2 + waferOff_));
455 #ifdef EDM_ML_DEBUG
456  edm::LogVerbatim("HGCalGeom") << "Geom Hex8 I/P " << id.zSide << ":" << id.iLay << ":" << id.iSec1 << ":"
457  << id.iSec2 << ":" << id.iType << " Constants " << kHGeomHalf_ << ":" << layers_
458  << ":" << waferMax_ << ":" << waferOff_ << " o/p " << idx;
459 #endif
460  }
461  return idx;
462 }

References cellMax_, decode(), firstLay_, heavyIonCSV_trainingSettings::idx, kHGeomHalf_, layers_, sectors_, tileTrapezoid(), waferHexagon6(), waferMax_, and waferOff_.

Referenced by HGCalGeometry::getGeometry(), HGCalGeometry::getSummary(), HGCalGeometry::indexFor(), HGCalGeometry::newCell(), and HGCalGeometry::present().

◆ detId2denseId()

uint32_t HGCalTopology::detId2denseId ( const DetId id) const
overridevirtual

Dense indexing.

Reimplemented from CaloSubdetectorTopology.

Definition at line 349 of file HGCalTopology.cc.

349  {
351  uint32_t idx;
352  if (waferHexagon6()) {
353  int type = (id.iType > 0) ? 1 : 0;
354  idx = (uint32_t)(((id.zSide > 0) ? kHGhalfType_ : 0) +
355  ((((id.iCell1 - 1) * layers_ + id.iLay - 1) * sectors_ + id.iSec1) * types_ + type));
356 #ifdef EDM_ML_DEBUG
357  edm::LogVerbatim("HGCalGeom") << "Input Hex " << id.zSide << ":" << id.iLay << ":" << id.iSec1 << ":" << id.iCell1
358  << ":" << id.iType << " Constants " << kHGeomHalf_ << ":" << layers_ << ":"
359  << sectors_ << ":" << types_ << " o/p " << idx;
360 #endif
361  } else if (tileTrapezoid()) {
362  idx =
363  (uint32_t)(((id.zSide > 0) ? kHGhalfType_ : 0) +
364  ((((id.iCell1 - 1) * layers_ + id.iLay - firstLay_) * sectors_ + id.iSec1 - 1) * types_ + id.iType));
365 #ifdef EDM_ML_DEBUG
366  edm::LogVerbatim("HGCalGeom") << "Input Trap " << id.zSide << ":" << id.iLay << ":" << id.iSec1 << ":" << id.iCell1
367  << ":" << id.iType << " Constants " << kHGeomHalf_ << ":" << layers_ << ":"
368  << sectors_ << ":" << types_ << " o/p " << idx;
369 #endif
370  } else {
371  idx =
372  (uint32_t)(((id.zSide > 0) ? kHGhalfType_ : 0) +
373  (((((id.iCell1 * cellMax_ + id.iCell2) * layers_ + id.iLay - 1) * waferMax_ + id.iSec1 + waferOff_) *
374  waferMax_ +
375  id.iSec2 + waferOff_) *
376  types_ +
377  id.iType));
378 #ifdef EDM_ML_DEBUG
379  edm::LogVerbatim("HGCalGeom") << "Input Hex8 " << id.zSide << ":" << id.iLay << ":" << id.iSec1 << ":" << id.iSec2
380  << ":" << id.iCell1 << ":" << id.iCell2 << ":" << id.iType << " Constants "
381  << kHGeomHalf_ << ":" << cellMax_ << ":" << layers_ << ":" << waferMax_ << ":"
382  << waferOff_ << ":" << types_ << " o/p " << idx;
383 #endif
384  }
385  return idx;
386 }

References cellMax_, decode(), firstLay_, heavyIonCSV_trainingSettings::idx, kHGeomHalf_, kHGhalfType_, layers_, sectors_, tileTrapezoid(), types_, waferHexagon6(), waferMax_, and waferOff_.

◆ down()

std::vector<DetId> HGCalTopology::down ( const DetId id) const
inlineoverridevirtual

Get the neighbors of the given cell in down direction (inward)

Implements CaloSubdetectorTopology.

Definition at line 68 of file HGCalTopology.h.

68  {
69  DetId nextId = changeZ(id, -1);
70  std::vector<DetId> vNeighborsDetId;
71  if (!(nextId == DetId(0)))
72  vNeighborsDetId.emplace_back(nextId);
73  return vNeighborsDetId;
74  }

References changeZ().

◆ east()

std::vector<DetId> HGCalTopology::east ( const DetId id) const
inlineoverridevirtual

Get the neighbors of the given cell in east direction

Implements CaloSubdetectorTopology.

Definition at line 42 of file HGCalTopology.h.

42  {
43  DetId nextId = goEast(id);
44  std::vector<DetId> vNeighborsDetId;
45  if (!(nextId == DetId(0)))
46  vNeighborsDetId.emplace_back(nextId);
47  return vNeighborsDetId;
48  }

References goEast().

◆ encode()

DetId HGCalTopology::encode ( const DecodedDetId id_) const

Definition at line 635 of file HGCalTopology.cc.

635  {
636  DetId id;
637 #ifdef EDM_ML_DEBUG
638  edm::LogVerbatim("HGCalGeomX") << "Encode " << idx.det << ":" << idx.zSide << ":" << idx.iType << ":" << idx.iLay
639  << ":" << idx.iSec1 << ":" << idx.iSec2 << ":" << idx.iCell1 << ":" << idx.iCell2;
640 #endif
641  if (waferHexagon6()) {
642  id =
643  HGCalDetId((ForwardSubdetector)(idx.det), idx.zSide, idx.iLay, ((idx.iType > 0) ? 1 : 0), idx.iSec1, idx.iCell1)
644  .rawId();
645  } else if (tileTrapezoid()) {
646  HGCScintillatorDetId hid(idx.iType, idx.iLay, idx.zSide * idx.iSec1, idx.iCell1);
647  std::pair<int, int> typm = hdcons_.tileType(hid.layer(), hid.ring(), 0);
648  if (typm.first >= 0) {
649  hid.setType(typm.first);
650  hid.setSiPM(typm.second);
651  }
652  id = hid.rawId();
654  id = HFNoseDetId(idx.zSide, idx.iType, idx.iLay, idx.iSec1, idx.iSec2, idx.iCell1, idx.iCell2).rawId();
655  } else {
656  id = HGCSiliconDetId(
657  (DetId::Detector)(idx.det), idx.zSide, idx.iType, idx.iLay, idx.iSec1, idx.iSec2, idx.iCell1, idx.iCell2)
658  .rawId();
659  }
660  return id;
661 }

References det_, DetId::Forward, hdcons_, HFNose, triggerObjects_cff::id, heavyIonCSV_trainingSettings::idx, HGCScintillatorDetId::layer(), DetId::rawId(), HGCScintillatorDetId::ring(), HGCScintillatorDetId::setSiPM(), HGCScintillatorDetId::setType(), subdet_, tileTrapezoid(), HGCalDDDConstants::tileType(), and waferHexagon6().

Referenced by denseId2detId(), HGCalGeometry::getClosestCell(), HGCalGeometry::newCell(), and switchZSide().

◆ geomDenseId2decId()

HGCalTopology::DecodedDetId HGCalTopology::geomDenseId2decId ( const uint32_t &  hi) const

Definition at line 523 of file HGCalTopology.cc.

523  {
525  if (hi < totalGeomModules()) {
526  id.zSide = ((int)(hi) < kHGeomHalf_ ? -1 : 1);
527  int di = ((int)(hi) % kHGeomHalf_);
528  if (waferHexagon6()) {
529  id.iSec1 = (di % sectors_);
530  di = (di - id.iSec1) / sectors_;
531  id.iLay = (di % layers_) + 1;
532  id.iType = ((di - id.iLay + 1) / layers_ == 0) ? -1 : 1;
533 #ifdef EDM_ML_DEBUG
534  edm::LogVerbatim("HGCalGeom") << "Geom Hex I/P " << hi << " O/P " << id.zSide << ":" << id.iType << ":" << id.iLay
535  << ":" << id.iSec1;
536 #endif
537  } else if (tileTrapezoid()) {
538  id.iCell1 = (di % cellMax_) + 1;
539  di = (di - id.iCell1 + 1) / cellMax_;
540  id.iSec1 = (di % sectors_) + 1;
541  di = (di - id.iSec1 + 1) / sectors_;
542  id.iLay = (di % layers_) + firstLay_;
543  id.iType = (di - id.iLay + firstLay_) / layers_;
544 #ifdef EDM_ML_DEBUG
545  edm::LogVerbatim("HGCalGeom") << "Geom Trap I/P " << hi << " O/P " << id.zSide << ":" << id.iType << ":"
546  << id.iLay << ":" << id.iSec1 << ":" << id.iCell1;
547 #endif
548  } else {
549  id.iSec2 = (di % waferMax_) - waferOff_;
550  di = (di - id.iSec2 - waferOff_) / waferMax_;
551  id.iSec1 = (di % waferMax_) - waferOff_;
552  di = (di - id.iSec1 - waferOff_) / waferMax_;
553  id.iLay = (di % layers_) + 1;
554  id.iType = (di - id.iLay + 1) / layers_;
555 #ifdef EDM_ML_DEBUG
556  edm::LogVerbatim("HGCalGeom") << "Geom Hex8 I/P " << hi << " O/P " << id.zSide << ":" << id.iType << ":"
557  << id.iLay << ":" << id.iSec1 << ":" << id.iSec2;
558 #endif
559  }
560  }
561  return id;
562 }

References cellMax_, firstLay_, triggerObjects_cff::id, createfilelist::int, kHGeomHalf_, layers_, sectors_, tileTrapezoid(), totalGeomModules(), waferHexagon6(), waferMax_, and waferOff_.

◆ geomMode()

HGCalGeometryMode::GeometryMode HGCalTopology::geomMode ( ) const
inline

Geometry mode.

Definition at line 79 of file HGCalTopology.h.

79 { return mode_; }

References mode_.

Referenced by HGCalGeometryLoader::build().

◆ goEast()

DetId HGCalTopology::goEast ( const DetId id) const
inlineoverridevirtual

move the Topology east (positive ix)

Reimplemented from CaloSubdetectorTopology.

Definition at line 41 of file HGCalTopology.h.

41 { return changeXY(id, +1, 0); }

References changeXY().

Referenced by east().

◆ goNorth()

DetId HGCalTopology::goNorth ( const DetId id) const
inlineoverridevirtual

move the Topology north (increment iy)

Reimplemented from CaloSubdetectorTopology.

Definition at line 21 of file HGCalTopology.h.

21 { return changeXY(id, 0, +1); }

References changeXY().

Referenced by north().

◆ goSouth()

DetId HGCalTopology::goSouth ( const DetId id) const
inlineoverridevirtual

move the Topology south (decrement iy)

Reimplemented from CaloSubdetectorTopology.

Definition at line 31 of file HGCalTopology.h.

31 { return changeXY(id, 0, -1); }

References changeXY().

Referenced by south().

◆ goWest()

DetId HGCalTopology::goWest ( const DetId id) const
inlineoverridevirtual

move the Topology west (negative ix)

Reimplemented from CaloSubdetectorTopology.

Definition at line 51 of file HGCalTopology.h.

51 { return changeXY(id, -1, 0); }

References changeXY().

Referenced by west().

◆ isHFNose()

bool HGCalTopology::isHFNose ( ) const
inline

Definition at line 120 of file HGCalTopology.h.

120  {
121  return (((det_ == DetId::Forward) && (subdet_ == ForwardSubdetector::HFNose)) ? true : false);
122  }

References det_, DetId::Forward, HFNose, and subdet_.

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

◆ maskCell()

bool HGCalTopology::maskCell ( const DetId id,
int  corners = 3 
) const
inline

Definition at line 96 of file HGCalTopology.h.

96 { return dddConstants().maskCell(id, corners); }

References dddConstants(), and HGCalDDDConstants::maskCell().

◆ neighbors()

std::vector< DetId > HGCalTopology::neighbors ( const DetId id) const

Definition at line 57 of file HGCalTopology.cc.

57  {
58  std::vector<DetId> ids;
60  if (waferHexagon8()) {
61  HGCalTypes::CellType celltype = hdcons_.cellType(id.iType, id.iCell1, id.iCell2);
62 #ifdef EDM_ML_DEBUG
63  edm::LogVerbatim("HGCalGeom") << "Type:WaferU:WaferV " << id.iType << ":" << id.iCell1 << ":" << id.iCell2
64  << " CellType "
65  << static_cast<std::underlying_type<HGCalTypes::CellType>::type>(celltype);
66 #endif
67  switch (celltype) {
69  // cell within the wafer
70 #ifdef EDM_ML_DEBUG
71  edm::LogVerbatim("HGCalGeom") << "Cell Type 0";
72 #endif
73  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
74  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
75  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
76  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
77  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
78  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
79  break;
80  }
82  // bottom left edge
83  int wu1(id.iSec1), wv1(id.iSec2 - 1);
84  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
85  int N1 = hdcons_.getUVMax(t1);
86  int v1 = hdcons_.modifyUV(id.iCell2, id.iType, t1);
87 #ifdef EDM_ML_DEBUG
88  edm::LogVerbatim("HGCalGeom") << "Cell Type 1 "
89  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << v1;
90 #endif
91  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
92  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
93  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1 - 1);
94  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1);
95  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
96  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
97  break;
98  }
100  // left edege
101  int wu1(id.iSec1 + 1), wv1(id.iSec2);
102  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
103  int N1 = hdcons_.getUVMax(t1);
104  int u1 = hdcons_.modifyUV(id.iCell1, id.iType, t1);
105 #ifdef EDM_ML_DEBUG
106  edm::LogVerbatim("HGCalGeom") << "Cell Type 2 "
107  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << u1;
108 #endif
109  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
110  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 + N1, 2 * N1 - 1);
111  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 + N1 - 1, 2 * N1 - 1);
112  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
113  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
114  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
115  break;
116  }
118  // top left edge
119  int wu1(id.iSec1 + 1), wv1(id.iSec2 + 1);
120  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
121  int N1 = hdcons_.getUVMax(t1);
122  int v1 = hdcons_.modifyUV(id.iCell2, id.iType, t1);
123 #ifdef EDM_ML_DEBUG
124  edm::LogVerbatim("HGCalGeom") << "Cell Type 3 "
125  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << v1;
126 #endif
127  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, v1 + 1, v1 + N1);
128  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, v1, v1 + N1 - 1);
129  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
130  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
131  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
132  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
133  break;
134  }
136  // top right edge
137  int wu1(id.iSec1), wv1(id.iSec2 + 1);
138  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
139  int N1 = hdcons_.getUVMax(t1);
140  int v1 = hdcons_.modifyUV(id.iCell2, id.iType, t1);
141 #ifdef EDM_ML_DEBUG
142  edm::LogVerbatim("HGCalGeom") << "Cell Type 4 "
143  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << v1;
144 #endif
145  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, 0, v1 - N1);
146  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
147  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
148  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
149  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
150  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, 0, v1 - N1 + 1);
151  break;
152  }
154  // right edge
155  int wu1(id.iSec1 - 1), wv1(id.iSec2);
156  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
157  int N1 = hdcons_.getUVMax(t1);
158  int u1 = hdcons_.modifyUV(id.iCell1, id.iType, t1);
159 #ifdef EDM_ML_DEBUG
160  edm::LogVerbatim("HGCalGeom") << "Cell Type 5 "
161  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << u1;
162 #endif
163  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
164  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
165  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
166  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
167  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 - N1, 0);
168  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 - N1 + 1, 0);
169  break;
170  }
172  // bottom right edge
173  int wu1(id.iSec1 - 1), wv1(id.iSec2 - 1);
174  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
175  int N1 = hdcons_.getUVMax(t1);
176  int u1 = hdcons_.modifyUV(id.iCell1, id.iType, t1);
177 #ifdef EDM_ML_DEBUG
178  edm::LogVerbatim("HGCalGeom") << "Cell Type 6 "
179  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << u1;
180 #endif
181  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
182  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
183  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
184  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 + N1 - 1, u1 - 1);
185  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 + N1, u1);
186  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
187  break;
188  }
190  // bottom corner
191  int wu1(id.iSec1), wv1(id.iSec2 - 1);
192  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
193  int N1 = hdcons_.getUVMax(t1);
194  int v1 = hdcons_.modifyUV(id.iCell2, id.iType, t1);
195  int wu2(id.iSec1 - 1), wv2(id.iSec2 - 1);
196  int t2 = hdcons_.getTypeHex(id.iLay, wu2, wv2);
197  int N2 = hdcons_.getUVMax(t2);
198  int u2 = hdcons_.modifyUV(id.iCell1, id.iType, t2);
199 #ifdef EDM_ML_DEBUG
200  edm::LogVerbatim("HGCalGeom") << "Cell Type 11 "
201  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << v1 << ":" << t2
202  << ":" << N2 << ":" << u2;
203 #endif
204  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
205  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
206  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1 - 1);
207  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, 2 * N1 - 1, v1 + N1);
208  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, u2 + N2, u2);
209  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
210  break;
211  }
213  // bottom left corner
214  int wu1(id.iSec1 + 1), wv1(id.iSec2);
215  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
216  int N1 = hdcons_.getUVMax(t1);
217  int u1 = hdcons_.modifyUV(id.iCell1, id.iType, t1);
218  int wu2(id.iSec1), wv2(id.iSec2 - 1);
219  int t2 = hdcons_.getTypeHex(id.iLay, wu2, wv2);
220  int N2 = hdcons_.getUVMax(t2);
221  int v2 = hdcons_.modifyUV(id.iCell2, id.iType, t2);
222 #ifdef EDM_ML_DEBUG
223  edm::LogVerbatim("HGCalGeom") << "Cell Type 12 "
224  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << u1 << ":" << t2
225  << ":" << N2 << ":" << v2;
226 #endif
227  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
228  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 + N1, 2 * N1 - 1);
229  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, 2 * N2 - 1, v2 + N2 - 1);
230  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, 2 * N2 - 1, v2 + N2);
231  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
232  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
233  break;
234  }
236  // top left corner
237  int wu1(id.iSec1 + 1), wv1(id.iSec2 + 1);
238  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
239  int N1 = hdcons_.getUVMax(t1);
240  int v1 = hdcons_.modifyUV(id.iCell2, id.iType, t1);
241  int wu2(id.iSec1 + 1), wv2(id.iSec2);
242  int t2 = hdcons_.getTypeHex(id.iLay, wu2, wv2);
243  int N2 = hdcons_.getUVMax(t2);
244  int u2 = hdcons_.modifyUV(id.iCell1, id.iType, t2);
245 #ifdef EDM_ML_DEBUG
246  edm::LogVerbatim("HGCalGeom") << "Cell Type 13 "
247  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << v1 << ":" << t2
248  << ":" << N2 << ":" << u2;
249 #endif
250  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, v1 + 1, N1 + v1);
251  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, v1, N1 + v1 - 1);
252  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, u2 + N2 - 1, 2 * N2 - 1);
253  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
254  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
255  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2 + 1);
256  break;
257  }
259  // top corner
260  int wu1(id.iSec1 + 1), wv1(id.iSec2 + 1);
261  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
262  int N1 = hdcons_.getUVMax(t1);
263  int v1 = hdcons_.modifyUV(id.iCell2, id.iType, t1);
264  int wu2(id.iSec1), wv2(id.iSec2 + 1);
265  int t2 = hdcons_.getTypeHex(id.iLay, wu2, wv2);
266  int N2 = hdcons_.getUVMax(t2);
267  int v2 = hdcons_.modifyUV(id.iCell2, id.iType, t2);
268 #ifdef EDM_ML_DEBUG
269  edm::LogVerbatim("HGCalGeom") << "Cell Type 14 "
270  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << v1 << ":" << t2
271  << ":" << N2 << ":" << v2;
272 #endif
273  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, v1 + 1, v1 + N1);
274  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, v1, v1 + N1 - 1);
275  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
276  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
277  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 + 1);
278  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, 0, v2 - N2 + 1);
279  break;
280  }
282  // top right corner
283  int wu1(id.iSec1), wv1(id.iSec2 + 1);
284  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
285  int N1 = hdcons_.getUVMax(t1);
286  int v1 = hdcons_.modifyUV(id.iCell2, id.iType, t1);
287  int wu2(id.iSec1 - 1), wv2(id.iSec2);
288  int t2 = hdcons_.getTypeHex(id.iLay, wu2, wv2);
289  int N2 = hdcons_.getUVMax(t2);
290  int u2 = hdcons_.modifyUV(id.iCell1, id.iType, t2);
291 #ifdef EDM_ML_DEBUG
292  edm::LogVerbatim("HGCalGeom") << "Cell Type 15 "
293  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << v1 << ":" << t2
294  << ":" << N2 << ":" << u2;
295 #endif
296  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, 0, v1 - N1);
297  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
298  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
299  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2);
300  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, u2 - N2, 0);
301  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, u2 - N2 + 1, 0);
302  break;
303  }
305  // bottom right corner
306  int wu1(id.iSec1 - 1), wv1(id.iSec2 - 1);
307  int t1 = hdcons_.getTypeHex(id.iLay, wu1, wv1);
308  int N1 = hdcons_.getUVMax(t1);
309  int u1 = hdcons_.modifyUV(id.iCell1, id.iType, t1);
310  int wu2(id.iSec1 - 1), wv2(id.iSec2);
311  int t2 = hdcons_.getTypeHex(id.iLay, wu2, wv2);
312  int N2 = hdcons_.getUVMax(t2);
313  int u2 = hdcons_.modifyUV(id.iCell1, id.iType, t2);
314 #ifdef EDM_ML_DEBUG
315  edm::LogVerbatim("HGCalGeom") << "Cell Type 16 "
316  << ":" << wu1 << ":" << wv1 << ":" << t1 << ":" << N1 << ":" << u1 << ":" << t2
317  << ":" << N2 << ":" << u2;
318 #endif
319  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 + 1, id.iCell2);
320  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2 - 1);
321  addHGCSiliconId(ids, id.det, id.zSide, id.iType, id.iLay, id.iSec1, id.iSec2, id.iCell1 - 1, id.iCell2 - 1);
322  addHGCSiliconId(ids, id.det, id.zSide, t1, id.iLay, wu1, wv1, u1 + N1 - 1, u1 - 1);
323  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, u2 - N2, 0);
324  addHGCSiliconId(ids, id.det, id.zSide, t2, id.iLay, wu2, wv2, u2 - N2 + 1, 0);
325  break;
326  }
327  default:
328  // Not valid u, v
329  int N = hdcons_.getUVMax(id.iType);
330  edm::LogWarning("HGCalGeom") << "u:v " << id.iCell1 << ":" << id.iCell2 << " Tests " << (id.iCell1 > 2 * N - 1)
331  << ":" << (id.iCell2 > 2 * N - 1) << ":" << (id.iCell2 >= (id.iCell1 + N)) << ":"
332  << (id.iCell1 > (id.iCell2 + N)) << " ERROR";
333  }
334  } else if (tileTrapezoid()) {
335  int iphi1 = (id.iCell1 > 1) ? id.iCell1 - 1 : hdcons_.getUVMax(id.iType);
336  int iphi2 = (id.iCell1 < hdcons_.getUVMax(id.iType)) ? id.iCell1 + 1 : 1;
337  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1 - 1, id.iCell1);
338  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1 - 1, iphi1);
339  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1, iphi1);
340  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1 + 1, iphi1);
341  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1 + 1, id.iCell1);
342  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1 + 1, iphi2);
343  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1, iphi2);
344  addHGCSCintillatorId(ids, id.zSide, id.iType, id.iLay, id.iSec1 - 1, iphi2);
345  }
346  return ids;
347 }

References addHGCSCintillatorId(), addHGCSiliconId(), HGCalTypes::BottomCorner, HGCalTypes::BottomLeftCorner, HGCalTypes::BottomLeftEdge, HGCalTypes::BottomRightCorner, HGCalTypes::BottomRightEdge, HGCalDDDConstants::cellType(), HGCalTypes::CentralType, decode(), HGCalDDDConstants::getTypeHex(), HGCalDDDConstants::getUVMax(), hdcons_, HGCalTypes::LeftEdge, HGCalDDDConstants::modifyUV(), N, HGCalTypes::RightEdge, RandomServiceHelper::t1, RandomServiceHelper::t2, tileTrapezoid(), HGCalTypes::TopCorner, HGCalTypes::TopLeftCorner, HGCalTypes::TopLeftEdge, HGCalTypes::TopRightCorner, HGCalTypes::TopRightEdge, testProducerWithPsetDescEmpty_cfi::u1, MetAnalyzer::u2, and waferHexagon8().

◆ north()

std::vector<DetId> HGCalTopology::north ( const DetId id) const
inlineoverridevirtual

Get the neighbors of the given cell in north direction

Implements CaloSubdetectorTopology.

Definition at line 22 of file HGCalTopology.h.

22  {
23  DetId nextId = goNorth(id);
24  std::vector<DetId> vNeighborsDetId;
25  if (!(nextId == DetId(0)))
26  vNeighborsDetId.emplace_back(nextId);
27  return vNeighborsDetId;
28  }

References goNorth().

◆ offsetBy()

DetId HGCalTopology::offsetBy ( const DetId  startId,
int  nrStepsX,
int  nrStepsY 
) const

returns a new DetId offset by nrStepsX and nrStepsY (can be negative), returns DetId(0) if invalid

Definition at line 504 of file HGCalTopology.cc.

504  {
505  if (startId.det() == DetId::Forward && startId.subdetId() == (int)(subdet_)) {
506  DetId id = changeXY(startId, nrStepsX, nrStepsY);
507  if (valid(id))
508  return id;
509  }
510  return DetId(0);
511 }

References changeXY(), DetId::det(), DetId::Forward, triggerObjects_cff::id, createfilelist::int, subdet_, DetId::subdetId(), and valid().

◆ south()

std::vector<DetId> HGCalTopology::south ( const DetId id) const
inlineoverridevirtual

Get the neighbors of the given cell in south direction

Implements CaloSubdetectorTopology.

Definition at line 32 of file HGCalTopology.h.

32  {
33  DetId nextId = goSouth(id);
34  std::vector<DetId> vNeighborsDetId;
35  if (!(nextId == DetId(0)))
36  vNeighborsDetId.emplace_back(nextId);
37  return vNeighborsDetId;
38  }

References goSouth().

◆ subDetector()

ForwardSubdetector HGCalTopology::subDetector ( ) const
inline

Definition at line 118 of file HGCalTopology.h.

118 { return subdet_; }

References subdet_.

Referenced by HGCalGeometryLoader::build().

◆ switchZSide()

DetId HGCalTopology::switchZSide ( const DetId  startId) const

Definition at line 513 of file HGCalTopology.cc.

513  {
514  HGCalTopology::DecodedDetId id_ = decode(startId);
515  id_.zSide = -id_.zSide;
516  DetId id = encode(id_);
517  if (valid(id))
518  return id;
519  else
520  return DetId(0);
521 }

References decode(), encode(), triggerObjects_cff::id, valid(), and HGCalTopology::DecodedDetId::zSide.

◆ tileTrapezoid()

bool HGCalTopology::tileTrapezoid ( ) const
inline

◆ totalGeomModules()

unsigned int HGCalTopology::totalGeomModules ( ) const
inline

◆ totalModules()

unsigned int HGCalTopology::totalModules ( ) const
inline

Definition at line 92 of file HGCalTopology.h.

92 { return kSizeForDenseIndexing; }

References kSizeForDenseIndexing.

Referenced by HGCalGeometry::HGCalGeometry().

◆ up()

std::vector<DetId> HGCalTopology::up ( const DetId id) const
inlineoverridevirtual

Get the neighbors of the given cell in up direction (outward)

Implements CaloSubdetectorTopology.

Definition at line 60 of file HGCalTopology.h.

60  {
61  DetId nextId = changeZ(id, +1);
62  std::vector<DetId> vNeighborsDetId;
63  if (!(nextId == DetId(0)))
64  vNeighborsDetId.emplace_back(nextId);
65  return vNeighborsDetId;
66  }

References changeZ().

◆ valid() [1/2]

bool HGCalTopology::valid ( const DetId id) const
overridevirtual

Is this a valid cell id.

Reimplemented from CaloSubdetectorTopology.

Definition at line 464 of file HGCalTopology.cc.

464  {
466  bool flag;
467  if (waferHexagon6()) {
468  flag = (idin.det() == det_ && idin.subdetId() == (int)(subdet_) && id.iCell1 >= 0 && id.iCell1 < cells_ &&
469  id.iLay > 0 && id.iLay <= layers_ && id.iSec1 >= 0 && id.iSec1 <= sectors_);
470  if (flag)
471  flag = hdcons_.isValidHex(id.iLay, id.iSec1, id.iCell1, true);
472  } else if (tileTrapezoid()) {
473  flag = ((idin.det() == det_) && hdcons_.isValidTrap(id.iLay, id.iSec1, id.iCell1));
474  } else {
475  flag = ((idin.det() == det_) && hdcons_.isValidHex8(id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2));
476  }
477  return flag;
478 }

References cells_, decode(), DetId::det(), det_, RemoveAddSevLevel::flag, hdcons_, createfilelist::int, HGCalDDDConstants::isValidHex(), HGCalDDDConstants::isValidHex8(), HGCalDDDConstants::isValidTrap(), layers_, sectors_, subdet_, DetId::subdetId(), tileTrapezoid(), and waferHexagon6().

Referenced by HGCDigitizer::checkPosition(), HGCalGeometry::newCell(), offsetBy(), switchZSide(), valid(), HGCalTriggerGeometryHexLayerBasedImp1::validCell(), HGCalTriggerGeometryV9Imp1::validCell(), HGCalTriggerGeometryV9Imp2::validCell(), HGCalTriggerGeometryV9Imp2::validCellId(), HGCalTriggerGeometryHexLayerBasedImp1::validCellId(), HGCalTriggerGeometryV9Imp1::validCellId(), and validModule().

◆ valid() [2/2]

bool HGCalTopology::valid ( const DetId id,
int  cornerMin 
) const

Definition at line 480 of file HGCalTopology.cc.

480  {
481  if (waferHexagon8()) {
483  bool mask = (cornerMin < HGCalTypes::WaferCornerMin) ? false : hdcons_.maskCell(idin, cornerMin);
484  bool flag = ((idin.det() == det_) &&
486  id.iLay, id.iSec1, id.iSec2, id.iCell1, id.iCell2, (cornerMin >= HGCalTypes::WaferCornerMin)));
487  return (flag && (!mask));
488  } else {
489  return valid(idin);
490  }
491 }

References decode(), DetId::det(), det_, RemoveAddSevLevel::flag, hdcons_, HGCalDDDConstants::isValidHex8(), HGCalDDDConstants::maskCell(), valid(), HGCalTypes::WaferCornerMin, and waferHexagon8().

◆ validHashIndex()

bool HGCalTopology::validHashIndex ( uint32_t  ix) const
inline

Definition at line 89 of file HGCalTopology.h.

89 { return (ix < kSizeForDenseIndexing); }

References kSizeForDenseIndexing.

Referenced by denseId2detId().

◆ validModule()

bool HGCalTopology::validModule ( const DetId id,
int  cornerMin 
) const

Definition at line 493 of file HGCalTopology.cc.

493  {
494  if (idin.det() != det_) {
495  return false;
496  } else if ((idin.det() == DetId::HGCalEE) || (idin.det() == DetId::HGCalHSi)) {
498  return hdcons_.isValidHex8(id.iLay, id.iSec1, id.iSec2, (cornerMin >= HGCalTypes::WaferCornerMin));
499  } else {
500  return valid(idin);
501  }
502 }

References decode(), DetId::det(), det_, hdcons_, DetId::HGCalEE, DetId::HGCalHSi, HGCalDDDConstants::isValidHex8(), valid(), and HGCalTypes::WaferCornerMin.

◆ waferHexagon6()

bool HGCalTopology::waferHexagon6 ( ) const
inline

◆ waferHexagon8()

bool HGCalTopology::waferHexagon8 ( ) const
inline

◆ west()

std::vector<DetId> HGCalTopology::west ( const DetId id) const
inlineoverridevirtual

Get the neighbors of the given cell in west direction

Implements CaloSubdetectorTopology.

Definition at line 52 of file HGCalTopology.h.

52  {
53  DetId nextId = goWest(id);
54  std::vector<DetId> vNeighborsDetId;
55  if (!(nextId == DetId(0)))
56  vNeighborsDetId.emplace_back(nextId);
57  return vNeighborsDetId;
58  }

References goWest().

Member Data Documentation

◆ cellMax_

int HGCalTopology::cellMax_
private

◆ cells_

int HGCalTopology::cells_
private

Definition at line 154 of file HGCalTopology.h.

Referenced by HGCalTopology(), and valid().

◆ det_

DetId::Detector HGCalTopology::det_
private

Definition at line 152 of file HGCalTopology.h.

Referenced by decode(), detector(), encode(), HGCalTopology(), isHFNose(), valid(), and validModule().

◆ firstLay_

int HGCalTopology::firstLay_
private

◆ hdcons_

const HGCalDDDConstants& HGCalTopology::hdcons_
private

◆ kHGeomHalf_

int HGCalTopology::kHGeomHalf_
private

◆ kHGhalf_

int HGCalTopology::kHGhalf_
private

Definition at line 156 of file HGCalTopology.h.

Referenced by HGCalTopology().

◆ kHGhalfType_

int HGCalTopology::kHGhalfType_
private

Definition at line 156 of file HGCalTopology.h.

Referenced by denseId2detId(), detId2denseId(), and HGCalTopology().

◆ kSizeForDenseIndexing

unsigned int HGCalTopology::kSizeForDenseIndexing
private

Definition at line 157 of file HGCalTopology.h.

Referenced by HGCalTopology(), totalModules(), and validHashIndex().

◆ layers_

int HGCalTopology::layers_
private

◆ mode_

HGCalGeometryMode::GeometryMode HGCalTopology::mode_
private

Definition at line 150 of file HGCalTopology.h.

Referenced by geomMode(), HGCalTopology(), tileTrapezoid(), waferHexagon6(), and waferHexagon8().

◆ sectors_

int HGCalTopology::sectors_
private

◆ subdet_

ForwardSubdetector HGCalTopology::subdet_
private

Definition at line 153 of file HGCalTopology.h.

Referenced by decode(), encode(), HGCalTopology(), isHFNose(), offsetBy(), subDetector(), and valid().

◆ subSectors_

const int HGCalTopology::subSectors_ = 2
static

Use subSector in square mode as wafer type in hexagon mode.

Definition at line 106 of file HGCalTopology.h.

◆ types_

int HGCalTopology::types_
private

Definition at line 154 of file HGCalTopology.h.

Referenced by denseId2detId(), detId2denseId(), and HGCalTopology().

◆ waferMax_

int HGCalTopology::waferMax_
private

◆ waferOff_

int HGCalTopology::waferOff_
private
RandomServiceHelper.t2
t2
Definition: RandomServiceHelper.py:257
HGCalTopology::layers_
int layers_
Definition: HGCalTopology.h:154
HGCalTopology::dddConstants
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:98
HGCalGeometryMode::TrapezoidFile
Definition: HGCalGeometryMode.h:33
HGCalTopology::goSouth
DetId goSouth(const DetId &id) const override
move the Topology south (decrement iy)
Definition: HGCalTopology.h:31
ForwardEmpty
Definition: ForwardSubdetector.h:5
HGCalDDDConstants::firstLayer
int firstLayer() const
Definition: HGCalDDDConstants.h:53
HGCalDDDConstants::isValidHex
bool isValidHex(int lay, int mod, int cell, bool reco) const
Definition: HGCalDDDConstants.cc:460
ecaldqm::zside
int zside(DetId const &)
Definition: EcalDQMCommonUtils.cc:189
ForwardSubdetector
ForwardSubdetector
Definition: ForwardSubdetector.h:4
HGCalTopology::addHGCSCintillatorId
void addHGCSCintillatorId(std::vector< DetId > &ids, int zside, int type, int lay, int iradius, int iphi) const
add DetId of Scintillator and Silicon type if valid
Definition: HGCalTopology.cc:564
HGCalDDDConstants::geomMode
HGCalGeometryMode::GeometryMode geomMode() const
Definition: HGCalDDDConstants.h:54
HGCalTopology::waferOff_
int waferOff_
Definition: HGCalTopology.h:155
HGCalTopology::types_
int types_
Definition: HGCalTopology.h:154
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
HGCalDDDConstants::waferUVMax
int waferUVMax() const
Definition: HGCalDDDConstants.h:205
HGCalTopology::kSizeForDenseIndexing
unsigned int kSizeForDenseIndexing
Definition: HGCalTopology.h:157
HGCalWaferIndex::waferU
int32_t waferU(const int32_t index)
Definition: HGCalWaferIndex.cc:27
HGCalTopology::det_
DetId::Detector det_
Definition: HGCalTopology.h:152
HGCalTopology::decode
DecodedDetId decode(const DetId &id) const
Definition: HGCalTopology.cc:589
HGCalTypes::CellType::TopLeftEdge
HGCalTopology::DecodedDetId
Definition: HGCalTopology.h:108
HGCalTypes::WaferCornerMin
static constexpr int32_t WaferCornerMin
Definition: HGCalTypes.h:90
HGCalTopology::mode_
HGCalGeometryMode::GeometryMode mode_
Definition: HGCalTopology.h:150
HGCalGeometryMode::Hexagon8Module
Definition: HGCalGeometryMode.h:34
HGCalTopology::totalGeomModules
unsigned int totalGeomModules() const
Definition: HGCalTopology.h:93
HGCalTopology::tileTrapezoid
bool tileTrapezoid() const
Definition: HGCalTopology.h:124
HGCalDDDConstants::getTypeHex
int getTypeHex(int layer, int waferU, int waferV) const
Definition: HGCalDDDConstants.cc:429
HFNoseDetId
Definition: HFNoseDetId.h:22
HGCalTypes::CellType::TopRightEdge
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
HGCSiliconDetId
Definition: HGCSiliconDetId.h:22
HGCalTopology::kHGeomHalf_
int kHGeomHalf_
Definition: HGCalTopology.h:156
HGCalTopology::DecodedDetId::zSide
int zSide
Definition: HGCalTopology.h:110
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
HGCalTopology::waferMax_
int waferMax_
Definition: HGCalTopology.h:155
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
DetId
Definition: DetId.h:17
HGCalDDDConstants::isValidHex8
bool isValidHex8(int lay, int waferU, int waferV, bool fullAndPart=false) const
Definition: HGCalDDDConstants.cc:502
HGCalTopology::kHGhalf_
int kHGhalf_
Definition: HGCalTopology.h:156
DetId::HGCalHSi
Definition: DetId.h:33
DetId::HGCalEE
Definition: DetId.h:32
HGCalTypes::CellType::BottomCorner
HGCalTopology::goEast
DetId goEast(const DetId &id) const override
move the Topology east (positive ix)
Definition: HGCalTopology.h:41
HGCalTopology::hdcons_
const HGCalDDDConstants & hdcons_
Definition: HGCalTopology.h:149
RandomServiceHelper.t1
t1
Definition: RandomServiceHelper.py:256
HGCalGeometryMode::Trapezoid
Definition: HGCalGeometryMode.h:31
HGCalDDDConstants::maxCells
int maxCells(bool reco) const
Definition: HGCalDDDConstants.cc:804
HGCalDDDConstants::maxCellUV
int maxCellUV() const
Definition: HGCalDDDConstants.h:91
HFNose
Definition: ForwardSubdetector.h:11
HGCalDDDConstants::tileType
std::pair< int, int > tileType(int layer, int ring, int phi) const
Definition: HGCalDDDConstants.h:117
HGCalTopology::subdet_
ForwardSubdetector subdet_
Definition: HGCalTopology.h:153
N
#define N
Definition: blowfish.cc:9
HGCalWaferIndex::waferV
int32_t waferV(const int32_t index)
Definition: HGCalWaferIndex.cc:32
HGCalTopology::waferHexagon6
bool waferHexagon6() const
Definition: HGCalTopology.h:128
HGCalTopology::firstLay_
int firstLay_
Definition: HGCalTopology.h:155
HGCalDDDConstants::wafers
int wafers() const
Definition: HGCalDDDConstants.cc:1420
HGCalTypes::CellType
CellType
Definition: HGCalTypes.h:12
HGCalTopology::waferHexagon8
bool waferHexagon8() const
Definition: HGCalTopology.h:131
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
HGCalDDDConstants::numberCells
int numberCells(bool reco) const
Definition: HGCalDDDConstants.cc:901
HGCalGeometryMode::TrapezoidModule
Definition: HGCalGeometryMode.h:35
type
type
Definition: SiPixelVCal_PayloadInspector.cc:39
HGCalGeometryMode::Hexagon8Full
Definition: HGCalGeometryMode.h:30
gainCalibHelper::gainCalibPI::type
type
Definition: SiPixelGainCalibHelper.h:40
HGCalDDDConstants::layers
unsigned int layers(bool reco) const
Definition: HGCalDDDConstants.cc:577
HGCalTopology::cellMax_
int cellMax_
Definition: HGCalTopology.h:155
createfilelist.int
int
Definition: createfilelist.py:10
testProducerWithPsetDescEmpty_cfi.u1
u1
Definition: testProducerWithPsetDescEmpty_cfi.py:49
HGCalTopology::goWest
DetId goWest(const DetId &id) const override
move the Topology west (negative ix)
Definition: HGCalTopology.h:51
HGCalTopology::changeZ
DetId changeZ(const DetId &id, int nrStepsZ) const
move the nagivator along z
Definition: HGCalTopology.cc:665
HGCalTypes::CellType::TopLeftCorner
HGCalTypes::CellType::LeftEdge
DetId::Detector
Detector
Definition: DetId.h:24
HGCalDDDConstants::sectors
int sectors() const
Definition: HGCalDDDConstants.h:110
HGCalDDDConstants::isValidTrap
bool isValidTrap(int lay, int ieta, int iphi) const
Definition: HGCalDDDConstants.cc:566
HGCalDDDConstants::getUVMax
int getUVMax(int type) const
Definition: HGCalDDDConstants.h:72
HGCalTopology::changeXY
DetId changeXY(const DetId &id, int nrStepsX, int nrStepsY) const
move the nagivator along x, y
Definition: HGCalTopology.cc:663
HGCalTypes::CellType::TopCorner
HGCalGeometryMode::Hexagon
Definition: HGCalGeometryMode.h:27
HGCalTypes::CellType::BottomRightCorner
hi
Definition: EPCuts.h:4
HGCalDetId
Definition: HGCalDetId.h:8
HGCalGeometryMode::HexagonFull
Definition: HGCalGeometryMode.h:28
HGCalDDDConstants::cellType
HGCalTypes::CellType cellType(int type, int waferU, int waferV) const
Definition: HGCalDDDConstants.cc:240
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
HGCalTypes::CellType::BottomLeftCorner
HGCalTopology::encode
DetId encode(const DecodedDetId &id_) const
Definition: HGCalTopology.cc:635
HGCalTypes::CellType::RightEdge
HGCScintillatorDetId
Definition: HGCScintillatorDetId.h:23
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
HGCalTypes::CellType::BottomRightEdge
HGCalTopology::sectors_
int sectors_
Definition: HGCalTopology.h:154
HGCalTopology::cells_
int cells_
Definition: HGCalTopology.h:154
HGCalGeometryMode::Hexagon8File
Definition: HGCalGeometryMode.h:32
HGCalTopology::kHGhalfType_
int kHGhalfType_
Definition: HGCalTopology.h:156
HGCalTypes::CellType::CentralType
HGCalGeometryMode::Hexagon8
Definition: HGCalGeometryMode.h:29
HGCalTopology::valid
bool valid(const DetId &id) const override
Is this a valid cell id.
Definition: HGCalTopology.cc:464
HGCalTopology::addHGCSiliconId
void addHGCSiliconId(std::vector< DetId > &ids, int det, int zside, int type, int lay, int waferU, int waferV, int cellU, int cellV) const
Definition: HGCalTopology.cc:576
DetId::Forward
Definition: DetId.h:30
MetAnalyzer.u2
u2
Definition: MetAnalyzer.py:61
HGCalDDDConstants::modifyUV
int modifyUV(int uv, int type1, int type2) const
Definition: HGCalDDDConstants.cc:869
HGCalDDDConstants::maskCell
bool maskCell(const DetId &id, int corners) const
Definition: HGCalDDDConstants.cc:764
HGCalTypes::CellType::BottomLeftEdge
HGCalTopology::validHashIndex
bool validHashIndex(uint32_t ix) const
Definition: HGCalTopology.h:89
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:117
HGCalTypes::CellType::TopRightCorner
HGCalTopology::goNorth
DetId goNorth(const DetId &id) const override
move the Topology north (increment iy)
Definition: HGCalTopology.h:21