CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
HGCalTriggerGeometryHexLayerBasedImp1 Class Reference
Inheritance diagram for HGCalTriggerGeometryHexLayerBasedImp1:
HGCalTriggerGeometryBase

Public Member Functions

bool disconnectedModule (const unsigned) const final
 
geom_set getCellsFromModule (const unsigned) const final
 
geom_set getCellsFromTriggerCell (const unsigned) const final
 
unsigned getLinksInModule (const unsigned module_id) const final
 
unsigned getModuleFromCell (const unsigned) const final
 
unsigned getModuleFromTriggerCell (const unsigned) const final
 
GlobalPoint getModulePosition (const unsigned) const final
 
unsigned getModuleSize (const unsigned module_id) const final
 
geom_set getNeighborsFromTriggerCell (const unsigned) const final
 
geom_ordered_set getOrderedCellsFromModule (const unsigned) const final
 
geom_ordered_set getOrderedTriggerCellsFromModule (const unsigned) const final
 
unsigned getTriggerCellFromCell (const unsigned) const final
 
GlobalPoint getTriggerCellPosition (const unsigned) const final
 
geom_set getTriggerCellsFromModule (const unsigned) const final
 
 HGCalTriggerGeometryHexLayerBasedImp1 (const edm::ParameterSet &conf)
 
void initialize (const CaloGeometry *) final
 
void initialize (const HGCalGeometry *, const HGCalGeometry *, const HGCalGeometry *) final
 
void initialize (const HGCalGeometry *, const HGCalGeometry *, const HGCalGeometry *, const HGCalGeometry *) final
 
unsigned lastTriggerLayer () const final
 
void reset () final
 
unsigned triggerLayer (const unsigned) const final
 
bool validCell (const unsigned) const final
 
bool validTriggerCell (const unsigned) const final
 
- Public Member Functions inherited from HGCalTriggerGeometryBase
const HcalGeometrybhGeometry () const
 
const HcalTopologybhTopology () const
 
const CaloGeometrycaloGeometry () const
 
const HGCalGeometryeeGeometry () const
 
const HGCalTopologyeeTopology () const
 
const HGCalGeometryfhGeometry () const
 
const HGCalTopologyfhTopology () const
 
 HGCalTriggerGeometryBase (const edm::ParameterSet &conf)
 
const HGCalGeometryhscGeometry () const
 
const HGCalTopologyhscTopology () const
 
const HGCalGeometryhsiGeometry () const
 
const HGCalTopologyhsiTopology () const
 
bool isV9Geometry () const
 
bool isWithNoseGeometry () const
 
const std::string & name () const
 
const HGCalGeometrynoseGeometry () const
 
const HGCalTopologynoseTopology () const
 
void setWithNoseGeometry (const bool isNose)
 
virtual ~HGCalTriggerGeometryBase ()
 

Private Member Functions

int detIdWaferType (unsigned subdet, short wafer) const
 
void fillInvalidTriggerCells ()
 
void fillMaps ()
 
void fillNeighborMaps (const edm::FileInPath &, std::unordered_map< int, std::set< std::pair< short, short >>> &)
 
unsigned layerWithOffset (unsigned) const
 
unsigned packIetaIphi (unsigned ieta, unsigned iphi) const
 
unsigned packTriggerCell (unsigned, unsigned) const
 
unsigned packWaferCellId (unsigned subdet, unsigned wafer, unsigned cell) const
 
void unpackIetaIphi (unsigned ieta_iphi, unsigned &ieta, unsigned &iphi) const
 
void unpackWaferCellId (unsigned wafer_cell, unsigned &wafer, unsigned &cell) const
 
bool validCellId (unsigned subdet, unsigned cell_id) const
 
bool validTriggerCellFromCells (const unsigned) const
 

Private Attributes

unsigned bhOffset_ = 0
 
std::unordered_map< unsigned, unsigned > cells_to_trigger_cells_
 
std::unordered_map< unsigned, unsigned > cells_to_trigger_cells_bh_
 
std::unordered_set< unsigned > disconnected_layers_
 
std::unordered_set< unsigned > disconnected_modules_
 
unsigned fhOffset_ = 0
 
std::unordered_set< unsigned > invalid_triggercells_
 
edm::FileInPath l1tCellNeighborsBHMapping_
 
edm::FileInPath l1tCellNeighborsMapping_
 
edm::FileInPath l1tCellsBHMapping_
 
edm::FileInPath l1tCellsMapping_
 
edm::FileInPath l1tModulesMapping_
 
unsigned last_trigger_layer_ = 0
 
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
 
std::unordered_map< unsigned, unsigned short > number_trigger_cells_in_wafers_
 
std::unordered_map< unsigned, unsigned short > number_trigger_cells_in_wafers_bh_
 
unsigned totalLayers_ = 0
 
std::unordered_map< int, std::set< std::pair< short, short > > > trigger_cell_neighbors_
 
std::unordered_map< int, std::set< std::pair< short, short > > > trigger_cell_neighbors_bh_
 
std::unordered_multimap< unsigned, unsigned > trigger_cells_to_cells_
 
std::unordered_multimap< unsigned, unsigned > trigger_cells_to_cells_bh_
 
std::vector< unsigned > trigger_layers_
 
std::unordered_map< unsigned, unsigned > wafer_to_module_
 

Additional Inherited Members

- Public Types inherited from HGCalTriggerGeometryBase
typedef std::unordered_map< unsigned, unsigned > geom_map
 
typedef std::set< unsigned > geom_ordered_set
 
typedef std::unordered_set< unsigned > geom_set
 
- Protected Member Functions inherited from HGCalTriggerGeometryBase
void setCaloGeometry (const CaloGeometry *geom)
 
void setEEGeometry (const HGCalGeometry *geom)
 
void setHScGeometry (const HGCalGeometry *geom)
 
void setHSiGeometry (const HGCalGeometry *geom)
 
void setNoseGeometry (const HGCalGeometry *geom)
 

Detailed Description

Definition at line 13 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Constructor & Destructor Documentation

◆ HGCalTriggerGeometryHexLayerBasedImp1()

HGCalTriggerGeometryHexLayerBasedImp1::HGCalTriggerGeometryHexLayerBasedImp1 ( const edm::ParameterSet conf)

Definition at line 102 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

103  : HGCalTriggerGeometryBase(conf),
104  l1tCellsMapping_(conf.getParameter<edm::FileInPath>("L1TCellsMapping")),
105  l1tCellsBHMapping_(conf.getParameter<edm::FileInPath>("L1TCellsBHMapping")),
106  l1tModulesMapping_(conf.getParameter<edm::FileInPath>("L1TModulesMapping")),
107  l1tCellNeighborsMapping_(conf.getParameter<edm::FileInPath>("L1TCellNeighborsMapping")),
108  l1tCellNeighborsBHMapping_(conf.getParameter<edm::FileInPath>("L1TCellNeighborsBHMapping")) {
109  std::vector<unsigned> tmp_vector = conf.getParameter<std::vector<unsigned>>("DisconnectedModules");
110  std::move(tmp_vector.begin(), tmp_vector.end(), std::inserter(disconnected_modules_, disconnected_modules_.end()));
111  tmp_vector = conf.getParameter<std::vector<unsigned>>("DisconnectedLayers");
112  std::move(tmp_vector.begin(), tmp_vector.end(), std::inserter(disconnected_layers_, disconnected_layers_.end()));
113 }

References disconnected_layers_, disconnected_modules_, edm::ParameterSet::getParameter(), and eostools::move().

Member Function Documentation

◆ detIdWaferType()

int HGCalTriggerGeometryHexLayerBasedImp1::detIdWaferType ( unsigned  subdet,
short  wafer 
) const
private

Definition at line 753 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

753  {
754  int wafer_type = 0;
755  switch (subdet) {
756  // HGCalDDDConstants::waferTypeT() returns 2=coarse, 1=fine
757  // HGCalDetId::waferType() returns -1=coarse, 1=fine
758  // Convert to HGCalDetId waferType
760  wafer_type = (eeTopology().dddConstants().waferTypeT(wafer) == 2 ? -1 : 1);
761  break;
763  wafer_type = (fhTopology().dddConstants().waferTypeT(wafer) == 2 ? -1 : 1);
764  break;
765  default:
766  break;
767  };
768  return wafer_type;
769 }

References HGCalTopology::dddConstants(), HGCalTriggerGeometryBase::eeTopology(), HGCalTriggerGeometryBase::fhTopology(), HGCEE, HGCHEF, and HGCalDDDConstants::waferTypeT().

Referenced by getCellsFromTriggerCell().

◆ disconnectedModule()

bool HGCalTriggerGeometryHexLayerBasedImp1::disconnectedModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 694 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

694  {
695  bool disconnected = false;
696  if (disconnected_modules_.find(HGCalDetId(module_id).wafer()) != disconnected_modules_.end())
697  disconnected = true;
698  if (disconnected_layers_.find(layerWithOffset(module_id)) != disconnected_layers_.end())
699  disconnected = true;
700  return disconnected;
701 }

References disconnected_layers_, disconnected_modules_, and layerWithOffset().

◆ fillInvalidTriggerCells()

void HGCalTriggerGeometryHexLayerBasedImp1::fillInvalidTriggerCells ( )
private

Definition at line 611 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

611  {
612  unsigned n_layers_ee = eeTopology().dddConstants().layers(true);
613  for (unsigned layer = 1; layer <= n_layers_ee; layer++) {
614  for (const auto& wafer_module : wafer_to_module_) {
615  unsigned wafer = wafer_module.first;
616  // loop on the trigger cells in each wafer
617  for (int trigger_cell = 0; trigger_cell < number_trigger_cells_in_wafers_.at(wafer); trigger_cell++) {
618  std::set<unsigned> trigger_cell_ids;
619  trigger_cell_ids.emplace(HGCalDetId(ForwardSubdetector::HGCEE, -1, layer, 1, wafer, trigger_cell));
620  trigger_cell_ids.emplace(HGCalDetId(ForwardSubdetector::HGCEE, 1, layer, 1, wafer, trigger_cell));
621  trigger_cell_ids.emplace(HGCalDetId(ForwardSubdetector::HGCHEF, -1, layer, 1, wafer, trigger_cell));
622  trigger_cell_ids.emplace(HGCalDetId(ForwardSubdetector::HGCHEF, 1, layer, 1, wafer, trigger_cell));
623  for (unsigned trigger_cell : trigger_cell_ids) {
624  if (!validTriggerCellFromCells(trigger_cell))
625  invalid_triggercells_.emplace(trigger_cell);
626  for (unsigned neighbor : getNeighborsFromTriggerCell(trigger_cell)) {
627  if (!validTriggerCellFromCells(neighbor))
628  invalid_triggercells_.emplace(neighbor);
629  }
630  }
631  }
632  }
633  }
634 }

References HGCalTopology::dddConstants(), HGCalTriggerGeometryBase::eeTopology(), getNeighborsFromTriggerCell(), HGCEE, HGCHEF, invalid_triggercells_, HGCalDDDConstants::layers(), number_trigger_cells_in_wafers_, validTriggerCellFromCells(), and wafer_to_module_.

Referenced by initialize().

◆ fillMaps()

void HGCalTriggerGeometryHexLayerBasedImp1::fillMaps ( )
private

Definition at line 485 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

485  {
486  //
487  // read module mapping file
488  std::ifstream l1tModulesMappingStream(l1tModulesMapping_.fullPath());
489  if (!l1tModulesMappingStream.is_open()) {
490  throw cms::Exception("MissingDataFile") << "Cannot open HGCalTriggerGeometry L1TModulesMapping file\n";
491  }
492  short trigger_wafer = 0;
493  short module = 0;
494  for (; l1tModulesMappingStream >> trigger_wafer >> module;) {
495  wafer_to_module_.emplace(trigger_wafer, module);
496  module_to_wafers_.emplace(module, trigger_wafer);
497  // Default number of trigger cell in wafer is 0
498  number_trigger_cells_in_wafers_.emplace(trigger_wafer, 0);
499  }
500  if (!l1tModulesMappingStream.eof())
501  edm::LogWarning("HGCalTriggerGeometry")
502  << "Error reading L1TModulesMapping '" << trigger_wafer << " " << module << "' \n";
503  l1tModulesMappingStream.close();
504  // read trigger cell mapping file
505  std::ifstream l1tCellsMappingStream(l1tCellsMapping_.fullPath());
506  if (!l1tCellsMappingStream.is_open()) {
507  throw cms::Exception("MissingDataFile") << "Cannot open HGCalTriggerGeometry L1TCellsMapping file\n";
508  }
509  short subdet = 0;
510  short wafer = 0;
511  short cell = 0;
512  trigger_wafer = 0;
513  short trigger_cell = 0;
514  for (; l1tCellsMappingStream >> subdet >> wafer >> cell >> trigger_wafer >> trigger_cell;) {
515  unsigned cell_key = packWaferCellId(subdet, wafer, cell);
516  unsigned trigger_cell_key = packWaferCellId(subdet, trigger_wafer, trigger_cell);
517  // fill cell <-> trigger cell mappings
518  cells_to_trigger_cells_.emplace(cell_key, trigger_cell_key);
519  trigger_cells_to_cells_.emplace(trigger_cell_key, cell_key);
520  // fill number of trigger cells in wafers
521  auto itr_insert = number_trigger_cells_in_wafers_.emplace(trigger_wafer, 0);
522  if (trigger_cell + 1 > itr_insert.first->second)
523  itr_insert.first->second = trigger_cell + 1;
524  }
525  if (!l1tCellsMappingStream.eof())
526  edm::LogWarning("HGCalTriggerGeometry") << "Error reading L1TCellsMapping '" << subdet << " " << wafer << " "
527  << cell << " " << trigger_wafer << " " << trigger_cell << "' \n";
528  l1tCellsMappingStream.close();
529  // read BH trigger cell mapping file
530  std::ifstream l1tCellsBHMappingStream(l1tCellsBHMapping_.fullPath());
531  if (!l1tCellsBHMappingStream.is_open()) {
532  throw cms::Exception("MissingDataFile") << "Cannot open HGCalTriggerGeometry L1TCellsBHMapping file\n";
533  }
534  short ieta = 0;
535  short iphi = 0;
536  trigger_wafer = 0;
537  trigger_cell = 0;
538  for (; l1tCellsBHMappingStream >> ieta >> iphi >> trigger_wafer >> trigger_cell;) {
539  unsigned cell_key = packIetaIphi(ieta, iphi);
540  unsigned trigger_cell_key = packWaferCellId(ForwardSubdetector::HGCHEB, trigger_wafer, trigger_cell);
541  // fill cell <-> trigger cell mappings
542  cells_to_trigger_cells_bh_.emplace(cell_key, trigger_cell_key);
543  trigger_cells_to_cells_bh_.emplace(trigger_cell_key, cell_key);
544  // fill number of trigger cells in wafers
545  auto itr_insert = number_trigger_cells_in_wafers_bh_.emplace(trigger_wafer, 0);
546  if (trigger_cell + 1 > itr_insert.first->second)
547  itr_insert.first->second = trigger_cell + 1;
548  }
549  if (!l1tCellsBHMappingStream.eof())
550  edm::LogWarning("HGCalTriggerGeometry") << "Error reading L1TCellsBHMapping '" << ieta << " " << iphi << " "
551  << trigger_wafer << " " << trigger_cell << "' \n";
552  l1tCellsBHMappingStream.close();
553 }

References cells_to_trigger_cells_, cells_to_trigger_cells_bh_, Exception, edm::FileInPath::fullPath(), HGCHEB, LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, l1tCellsBHMapping_, l1tCellsMapping_, l1tModulesMapping_, module_to_wafers_, number_trigger_cells_in_wafers_, number_trigger_cells_in_wafers_bh_, packIetaIphi(), packWaferCellId(), trigger_cells_to_cells_, trigger_cells_to_cells_bh_, and wafer_to_module_.

Referenced by initialize().

◆ fillNeighborMaps()

void HGCalTriggerGeometryHexLayerBasedImp1::fillNeighborMaps ( const edm::FileInPath file,
std::unordered_map< int, std::set< std::pair< short, short >>> &  neighbors_map 
)
private

Definition at line 555 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

556  {
557  // Fill trigger neighbor map
558  std::ifstream l1tCellNeighborsMappingStream(file.fullPath());
559  if (!l1tCellNeighborsMappingStream.is_open()) {
560  throw cms::Exception("MissingDataFile") << "Cannot open HGCalTriggerGeometry L1TCellNeighborsMapping file\n";
561  }
562  for (std::array<char, 512> buffer; l1tCellNeighborsMappingStream.getline(&buffer[0], 512);) {
563  std::string line(&buffer[0]);
564  // Extract keys consisting of the module id
565  // and of the trigger cell id
566  // Match patterns (X,Y)
567  // where X is a number with less than 4 digis
568  // and Y is a number with less than 4 digits
569  std::regex key_regex("\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*\\)");
570  std::vector<std::string> key_tokens{std::sregex_token_iterator(line.begin(), line.end(), key_regex), {}};
571  if (key_tokens.empty()) {
572  throw cms::Exception("BadGeometry") << "Syntax error in the L1TCellNeighborsMapping:\n"
573  << " Cannot find the trigger cell key in line:\n"
574  << " '" << &buffer[0] << "'\n";
575  }
576  std::regex digits_regex("\\d{1,3}");
577  std::vector<std::string> module_tc{
578  std::sregex_token_iterator(key_tokens[0].begin(), key_tokens[0].end(), digits_regex), {}};
579  // get module and cell id
580  int module = std::stoi(module_tc[0]);
581  int trigger_cell = std::stoi(module_tc[1]);
582  unsigned map_key = packTriggerCell(module, trigger_cell);
583  // Extract neighbors
584  // Match patterns (X,Y)
585  // where X is a number with less than 4 digits
586  // and Y is a number with less than 4 digits
587  std::regex neighbors_regex("\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*\\)");
588  std::vector<std::string> neighbors_tokens{std::sregex_token_iterator(line.begin(), line.end(), neighbors_regex),
589  {}};
590  if (neighbors_tokens.size() < 2) {
591  throw cms::Exception("BadGeometry") << "Syntax error in the L1TCellNeighborsMapping:\n"
592  << " Cannot find any neighbor in line:\n"
593  << " '" << &buffer[0] << "'\n";
594  }
595  auto itr_insert = neighbors_map.emplace(map_key, std::set<std::pair<short, short>>());
596  // The first element is the key, so start at index 1
597  for (unsigned i = 1; i < neighbors_tokens.size(); i++) {
598  const auto& neighbor = neighbors_tokens[i];
599  std::vector<std::string> pair_neighbor{std::sregex_token_iterator(neighbor.begin(), neighbor.end(), digits_regex),
600  {}};
601  short neighbor_module(std::stoi(pair_neighbor[0]));
602  short neighbor_cell(std::stoi(pair_neighbor[1]));
603  itr_insert.first->second.emplace(neighbor_module, neighbor_cell);
604  }
605  }
606  if (!l1tCellNeighborsMappingStream.eof())
607  edm::LogWarning("HGCalTriggerGeometry") << "Error reading L1TCellNeighborsMapping'\n";
608  l1tCellNeighborsMappingStream.close();
609 }

References begin, edmScanValgrind::buffer, end, Exception, FrontierConditions_GlobalTag_cff::file, mps_fire::i, mps_splice::line, packTriggerCell(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by initialize().

◆ getCellsFromModule()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexLayerBasedImp1::getCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 293 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

294  {
295  geom_set cell_det_ids;
296  geom_set trigger_cells = getTriggerCellsFromModule(module_id);
297  for (auto trigger_cell_id : trigger_cells) {
298  geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
299  cell_det_ids.insert(cells.begin(), cells.end());
300  }
301  return cell_det_ids;
302 }

References postprocess-scan-build::cells, getCellsFromTriggerCell(), and getTriggerCellsFromModule().

Referenced by getModulePosition().

◆ getCellsFromTriggerCell()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexLayerBasedImp1::getCellsFromTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 247 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

248  {
249  HGCalDetId trigger_cell_det_id(trigger_cell_id);
250  geom_set cell_det_ids;
251  // BH
252  if (trigger_cell_det_id.subdetId() == ForwardSubdetector::HGCHEB) {
253  unsigned subdet = trigger_cell_det_id.subdetId();
254  unsigned trigger_wafer = trigger_cell_det_id.wafer();
255  unsigned trigger_cell = trigger_cell_det_id.cell();
256  const auto& cell_range =
257  trigger_cells_to_cells_bh_.equal_range(packWaferCellId(subdet, trigger_wafer, trigger_cell));
258  for (auto tc_c_itr = cell_range.first; tc_c_itr != cell_range.second; tc_c_itr++) {
259  unsigned ieta = 0;
260  unsigned iphi = 0;
261  unpackIetaIphi(tc_c_itr->second, ieta, iphi);
262  unsigned cell_det_id =
263  HcalDetId(HcalEndcap, trigger_cell_det_id.zside() * ieta, iphi, trigger_cell_det_id.layer()).rawId();
264  if (validCellId(subdet, cell_det_id))
265  cell_det_ids.emplace(cell_det_id);
266  }
267  }
268  // EE or FH
269  else {
270  unsigned subdet = trigger_cell_det_id.subdetId();
271  unsigned trigger_wafer = trigger_cell_det_id.wafer();
272  unsigned trigger_cell = trigger_cell_det_id.cell();
273  const auto& cell_range = trigger_cells_to_cells_.equal_range(packWaferCellId(subdet, trigger_wafer, trigger_cell));
274  for (auto tc_c_itr = cell_range.first; tc_c_itr != cell_range.second; tc_c_itr++) {
275  unsigned wafer = 0;
276  unsigned cell = 0;
277  unpackWaferCellId(tc_c_itr->second, wafer, cell);
278  unsigned wafer_type = (detIdWaferType(subdet, wafer) == 1 ? 1 : 0);
279  unsigned cell_det_id = HGCalDetId((ForwardSubdetector)trigger_cell_det_id.subdetId(),
280  trigger_cell_det_id.zside(),
281  trigger_cell_det_id.layer(),
282  wafer_type,
283  wafer,
284  cell)
285  .rawId();
286  if (validCellId(subdet, cell_det_id))
287  cell_det_ids.emplace(cell_det_id);
288  }
289  }
290  return cell_det_ids;
291 }

References HGCalDetId::cell(), detIdWaferType(), HcalEndcap, HGCHEB, LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, HGCalDetId::layer(), packWaferCellId(), DetId::subdetId(), trigger_cells_to_cells_, trigger_cells_to_cells_bh_, unpackIetaIphi(), unpackWaferCellId(), validCellId(), HGCalDetId::wafer(), and HGCalDetId::zside().

Referenced by getCellsFromModule(), getOrderedCellsFromModule(), getTriggerCellPosition(), and validTriggerCellFromCells().

◆ getLinksInModule()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::getLinksInModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 433 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

433 { return 1; }

◆ getModuleFromCell()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::getModuleFromCell ( const unsigned  cell_id) const
finalvirtual

◆ getModuleFromTriggerCell()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::getModuleFromTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 218 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

218  {
219  HGCalDetId trigger_cell_det_id(trigger_cell_id);
220  unsigned module = 0;
221  // BH
222  if (trigger_cell_det_id.subdetId() == ForwardSubdetector::HGCHEB) {
223  // For BH, the module ID is currently encoded as the wafer in HGCalDetId
224  module = trigger_cell_det_id.wafer();
225  }
226  // EE or FH
227  else {
228  auto module_itr = wafer_to_module_.find(trigger_cell_det_id.wafer());
229  if (module_itr == wafer_to_module_.end()) {
230  throw cms::Exception("BadGeometry")
231  << trigger_cell_det_id << "HGCalTriggerGeometry: Wafer " << trigger_cell_det_id.wafer()
232  << " is not mapped to any trigger module. The module mapping should be modified. See "
233  "https://twiki.cern.ch/twiki/bin/viewauth/CMS/HGCALTriggerPrimitivesSimulation#Trigger_geometry for "
234  "details.\n";
235  }
236  module = module_itr->second;
237  }
238  return HGCalDetId((ForwardSubdetector)trigger_cell_det_id.subdetId(),
239  trigger_cell_det_id.zside(),
240  trigger_cell_det_id.layer(),
241  (trigger_cell_det_id.waferType() == 1 ? 1 : 0),
242  module,
244  .rawId();
245 }

References Exception, HGCHEB, HGCalDetId::kHGCalCellMask, HGCalDetId::layer(), DetId::rawId(), DetId::subdetId(), HGCalDetId::wafer(), wafer_to_module_, HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getModuleFromCell().

◆ getModulePosition()

GlobalPoint HGCalTriggerGeometryHexLayerBasedImp1::getModulePosition ( const unsigned  module_det_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 461 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

461  {
462  unsigned subdet = HGCalDetId(module_det_id).subdetId();
463  // Position: barycenter of the module.
464  Basic3DVector<float> moduleVector(0., 0., 0.);
465  const auto cell_ids = getCellsFromModule(module_det_id);
466  // BH
467  if (subdet == ForwardSubdetector::HGCHEB) {
468  for (const auto& cell : cell_ids) {
469  HcalDetId cellDetId(cell);
470  moduleVector += bhGeometry()->getPosition(cellDetId).basicVector();
471  }
472  }
473  // EE or FH
474  else {
475  for (const auto& cell : cell_ids) {
476  HGCalDetId cellDetId(cell);
477  moduleVector += (cellDetId.subdetId() == ForwardSubdetector::HGCEE ? eeGeometry()->getPosition(cellDetId)
478  : fhGeometry()->getPosition(cellDetId))
479  .basicVector();
480  }
481  }
482  return GlobalPoint(moduleVector / cell_ids.size());
483 }

References PV3DBase< T, PVType, FrameType >::basicVector(), HGCalTriggerGeometryBase::bhGeometry(), HGCalTriggerGeometryBase::eeGeometry(), HGCalTriggerGeometryBase::fhGeometry(), getCellsFromModule(), HcalGeometry::getPosition(), HGCalGeometry::getPosition(), HGCEE, HGCHEB, and DetId::subdetId().

◆ getModuleSize()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::getModuleSize ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 435 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

435 { return 1; }

◆ getNeighborsFromTriggerCell()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexLayerBasedImp1::getNeighborsFromTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 399 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

400  {
401  HGCalDetId trigger_cell_det_id(trigger_cell_id);
402  // Choose scintillator or silicon map
403  const auto& neighbors_map = (trigger_cell_det_id.subdetId() == ForwardSubdetector::HGCHEB ? trigger_cell_neighbors_bh_
405  unsigned module = trigger_cell_det_id.wafer();
406  unsigned trigger_cell = trigger_cell_det_id.cell();
407  // retrieve neighbors
408  unsigned trigger_cell_key = packTriggerCell(module, trigger_cell);
409  geom_set neighbor_detids;
410  auto neighbors_itr = neighbors_map.find(trigger_cell_key);
411  if (neighbors_itr == neighbors_map.end()) {
412  throw cms::Exception("BadGeometry") << "HGCalTriggerGeometry: Neighbors are not defined for trigger cell "
413  << trigger_cell << " in module " << module
414  << ". The trigger cell neighbor mapping should be modified. \n";
415  }
416  const auto& neighbors = neighbors_itr->second;
417  // create HGCalDetId of neighbors and check their validity
418  neighbor_detids.reserve(neighbors.size());
419  for (const auto& module_tc : neighbors) {
420  HGCalDetId neighbor_det_id((ForwardSubdetector)trigger_cell_det_id.subdetId(),
421  trigger_cell_det_id.zside(),
422  trigger_cell_det_id.layer(),
423  1,
424  module_tc.first,
425  module_tc.second);
426  if (validTriggerCell(neighbor_det_id.rawId())) {
427  neighbor_detids.emplace(neighbor_det_id.rawId());
428  }
429  }
430  return neighbor_detids;
431 }

References HGCalDetId::cell(), Exception, HGCHEB, HGCalDetId::layer(), packTriggerCell(), DetId::subdetId(), trigger_cell_neighbors_, trigger_cell_neighbors_bh_, validTriggerCell(), HGCalDetId::wafer(), and HGCalDetId::zside().

Referenced by fillInvalidTriggerCells().

◆ getOrderedCellsFromModule()

HGCalTriggerGeometryBase::geom_ordered_set HGCalTriggerGeometryHexLayerBasedImp1::getOrderedCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 304 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

305  {
306  geom_ordered_set cell_det_ids;
307  geom_ordered_set trigger_cells = getOrderedTriggerCellsFromModule(module_id);
308  for (auto trigger_cell_id : trigger_cells) {
309  geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
310  cell_det_ids.insert(cells.begin(), cells.end());
311  }
312  return cell_det_ids;
313 }

References postprocess-scan-build::cells, getCellsFromTriggerCell(), and getOrderedTriggerCellsFromModule().

◆ getOrderedTriggerCellsFromModule()

HGCalTriggerGeometryBase::geom_ordered_set HGCalTriggerGeometryHexLayerBasedImp1::getOrderedTriggerCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 357 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

358  {
359  HGCalDetId module_det_id(module_id);
360  geom_ordered_set trigger_cell_det_ids;
361  // BH
362  if (module_det_id.subdetId() == ForwardSubdetector::HGCHEB) {
363  unsigned module = module_det_id.wafer();
364  // loop on the trigger cells in each module
365  for (int trigger_cell = 0; trigger_cell < number_trigger_cells_in_wafers_bh_.at(module); trigger_cell++) {
366  HGCalDetId trigger_cell_id((ForwardSubdetector)module_det_id.subdetId(),
367  module_det_id.zside(),
368  module_det_id.layer(),
369  1,
370  module,
371  trigger_cell);
372  if (validTriggerCell(trigger_cell_id))
373  trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
374  }
375  }
376  // EE or FH
377  else {
378  unsigned module = module_det_id.wafer();
379  auto wafer_itrs = module_to_wafers_.equal_range(module);
380  // loop on the wafers included in the module
381  for (auto wafer_itr = wafer_itrs.first; wafer_itr != wafer_itrs.second; wafer_itr++) {
382  unsigned wafer = wafer_itr->second;
383  // loop on the trigger cells in each wafer
384  for (int trigger_cell = 0; trigger_cell < number_trigger_cells_in_wafers_.at(wafer); trigger_cell++) {
385  HGCalDetId trigger_cell_id((ForwardSubdetector)module_det_id.subdetId(),
386  module_det_id.zside(),
387  module_det_id.layer(),
388  1,
389  wafer,
390  trigger_cell);
391  if (validTriggerCell(trigger_cell_id))
392  trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
393  }
394  }
395  }
396  return trigger_cell_det_ids;
397 }

References HGCHEB, HGCalDetId::layer(), module_to_wafers_, number_trigger_cells_in_wafers_, number_trigger_cells_in_wafers_bh_, DetId::subdetId(), validTriggerCell(), HGCalDetId::wafer(), and HGCalDetId::zside().

Referenced by getOrderedCellsFromModule().

◆ getTriggerCellFromCell()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::getTriggerCellFromCell ( const unsigned  cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 167 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

167  {
168  unsigned subdet = 0;
169  int zside = 0;
170  unsigned layer = 0;
171  unsigned wafer_trigger_cell = 0;
172  unsigned trigger_cell = 0;
173  // BH
174  if (DetId(cell_id).det() == DetId::Hcal) {
175  HcalDetId cell_det_id(cell_id);
176  if (cell_det_id.subdetId() != HcalEndcap)
177  return 0;
178  unsigned ieta = cell_det_id.ietaAbs();
179  unsigned iphi = cell_det_id.iphi();
180  layer = cell_det_id.depth();
182  zside = cell_det_id.zside();
183  auto trigger_cell_itr = cells_to_trigger_cells_bh_.find(packIetaIphi(ieta, iphi));
184  if (trigger_cell_itr == cells_to_trigger_cells_bh_.end()) {
185  throw cms::Exception("BadGeometry")
186  << "HGCalTriggerGeometry: Hcal cell ieta=" << ieta << ", iphi=" << iphi
187  << " is not mapped to any trigger cell. The trigger cell mapping should be modified.\n";
188  }
189  trigger_cell = 0;
190  wafer_trigger_cell = 0;
191  unpackWaferCellId(trigger_cell_itr->second, wafer_trigger_cell, trigger_cell);
192  }
193  // EE or FH
194  else if (DetId(cell_id).det() == DetId::Forward) {
195  HGCalDetId cell_det_id(cell_id);
196  subdet = cell_det_id.subdetId();
197  layer = cell_det_id.layer();
198  zside = cell_det_id.zside();
199  unsigned wafer = cell_det_id.wafer();
200  unsigned cell = cell_det_id.cell();
201  auto trigger_cell_itr = cells_to_trigger_cells_.find(packWaferCellId(subdet, wafer, cell));
202  if (trigger_cell_itr == cells_to_trigger_cells_.end()) {
203  throw cms::Exception("BadGeometry")
204  << "HGCalTriggerGeometry: HGCal cell " << cell << " in wafer " << wafer
205  << " is not mapped to any trigger cell. The trigger cell mapping should be modified.\n";
206  }
207  trigger_cell = 0;
208  wafer_trigger_cell = 0;
209  unpackWaferCellId(trigger_cell_itr->second, wafer_trigger_cell, trigger_cell);
210  }
211  return HGCalDetId((ForwardSubdetector)subdet, zside, layer, 1, wafer_trigger_cell, trigger_cell).rawId();
212 }

References HGCalDetId::cell(), cells_to_trigger_cells_, cells_to_trigger_cells_bh_, HcalDetId::depth(), Exception, DetId::Forward, DetId::Hcal, HcalEndcap, HGCHEB, LEDCalibrationChannels::ieta, HcalDetId::ietaAbs(), LEDCalibrationChannels::iphi, HcalDetId::iphi(), HGCalDetId::layer(), packIetaIphi(), packWaferCellId(), DetId::rawId(), DetId::subdetId(), unpackWaferCellId(), HGCalDetId::wafer(), HGCalDetId::zside(), HcalDetId::zside(), and ecaldqm::zside().

Referenced by getModuleFromCell().

◆ getTriggerCellPosition()

GlobalPoint HGCalTriggerGeometryHexLayerBasedImp1::getTriggerCellPosition ( const unsigned  trigger_cell_det_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 437 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

437  {
438  unsigned subdet = HGCalDetId(trigger_cell_det_id).subdetId();
439  // Position: barycenter of the trigger cell.
440  Basic3DVector<float> triggerCellVector(0., 0., 0.);
441  const auto cell_ids = getCellsFromTriggerCell(trigger_cell_det_id);
442  // BH
443  if (subdet == ForwardSubdetector::HGCHEB) {
444  for (const auto& cell : cell_ids) {
445  HcalDetId cellDetId(cell);
446  triggerCellVector += bhGeometry()->getPosition(cellDetId).basicVector();
447  }
448  }
449  // EE or FH
450  else {
451  for (const auto& cell : cell_ids) {
452  HGCalDetId cellDetId(cell);
453  triggerCellVector += (cellDetId.subdetId() == ForwardSubdetector::HGCEE ? eeGeometry()->getPosition(cellDetId)
454  : fhGeometry()->getPosition(cellDetId))
455  .basicVector();
456  }
457  }
458  return GlobalPoint(triggerCellVector / cell_ids.size());
459 }

References PV3DBase< T, PVType, FrameType >::basicVector(), HGCalTriggerGeometryBase::bhGeometry(), HGCalTriggerGeometryBase::eeGeometry(), HGCalTriggerGeometryBase::fhGeometry(), getCellsFromTriggerCell(), HcalGeometry::getPosition(), HGCalGeometry::getPosition(), HGCEE, HGCHEB, and DetId::subdetId().

◆ getTriggerCellsFromModule()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexLayerBasedImp1::getTriggerCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 315 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

316  {
317  HGCalDetId module_det_id(module_id);
318  geom_set trigger_cell_det_ids;
319  // BH
320  if (module_det_id.subdetId() == ForwardSubdetector::HGCHEB) {
321  unsigned module = module_det_id.wafer();
322  // loop on the trigger cells in each module
323  for (int trigger_cell = 0; trigger_cell < number_trigger_cells_in_wafers_bh_.at(module); trigger_cell++) {
324  HGCalDetId trigger_cell_id((ForwardSubdetector)module_det_id.subdetId(),
325  module_det_id.zside(),
326  module_det_id.layer(),
327  1,
328  module,
329  trigger_cell);
330  if (validTriggerCell(trigger_cell_id))
331  trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
332  }
333  }
334  // EE or FH
335  else {
336  unsigned module = module_det_id.wafer();
337  auto wafer_itrs = module_to_wafers_.equal_range(module);
338  // loop on the wafers included in the module
339  for (auto wafer_itr = wafer_itrs.first; wafer_itr != wafer_itrs.second; wafer_itr++) {
340  unsigned wafer = wafer_itr->second;
341  // loop on the trigger cells in each wafer
342  for (int trigger_cell = 0; trigger_cell < number_trigger_cells_in_wafers_.at(wafer); trigger_cell++) {
343  HGCalDetId trigger_cell_id((ForwardSubdetector)module_det_id.subdetId(),
344  module_det_id.zside(),
345  module_det_id.layer(),
346  1,
347  wafer,
348  trigger_cell);
349  if (validTriggerCell(trigger_cell_id))
350  trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
351  }
352  }
353  }
354  return trigger_cell_det_ids;
355 }

References HGCHEB, HGCalDetId::layer(), module_to_wafers_, number_trigger_cells_in_wafers_, number_trigger_cells_in_wafers_bh_, DetId::subdetId(), validTriggerCell(), HGCalDetId::wafer(), and HGCalDetId::zside().

Referenced by getCellsFromModule().

◆ initialize() [1/3]

void HGCalTriggerGeometryHexLayerBasedImp1::initialize ( const CaloGeometry calo_geometry)
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 128 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

128  {
129  setCaloGeometry(calo_geometry);
133  trigger_layers_.resize(totalLayers_ + 1);
134  trigger_layers_[0] = 0; // layer number 0 doesn't exist
135  unsigned trigger_layer = 1;
136  for (unsigned layer = 1; layer < trigger_layers_.size(); layer++) {
137  if (disconnected_layers_.find(layer) == disconnected_layers_.end()) {
138  // Increase trigger layer number if the layer is not disconnected
139  trigger_layers_[layer] = trigger_layer;
140  trigger_layer++;
141  } else {
142  trigger_layers_[layer] = 0;
143  }
144  }
145  last_trigger_layer_ = trigger_layer - 1;
146  fillMaps();
150 }

References bhOffset_, HGCalTriggerGeometryBase::bhTopology(), HGCalTopology::dddConstants(), HcalTopology::dddConstants(), disconnected_layers_, HGCalTriggerGeometryBase::eeTopology(), fhOffset_, HGCalTriggerGeometryBase::fhTopology(), fillInvalidTriggerCells(), fillMaps(), fillNeighborMaps(), HcalDDDRecConstants::getMaxDepth(), l1tCellNeighborsBHMapping_, l1tCellNeighborsMapping_, last_trigger_layer_, HGCalDDDConstants::layers(), HGCalTriggerGeometryBase::setCaloGeometry(), totalLayers_, trigger_cell_neighbors_, trigger_cell_neighbors_bh_, and trigger_layers_.

◆ initialize() [2/3]

void HGCalTriggerGeometryHexLayerBasedImp1::initialize ( const HGCalGeometry hgc_ee_geometry,
const HGCalGeometry hgc_hsi_geometry,
const HGCalGeometry hgc_hsc_geometry 
)
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 152 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

154  {
155  throw cms::Exception("BadGeometry")
156  << "HGCalTriggerGeometryHexLayerBasedImp1 geometry cannot be initialized with the V9 HGCAL geometry";
157 }

References Exception.

◆ initialize() [3/3]

void HGCalTriggerGeometryHexLayerBasedImp1::initialize ( const HGCalGeometry hgc_ee_geometry,
const HGCalGeometry hgc_hsi_geometry,
const HGCalGeometry hgc_hsc_geometry,
const HGCalGeometry hgc_nose_geometry 
)
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 159 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

162  {
163  throw cms::Exception("BadGeometry")
164  << "HGCalTriggerGeometryHexLayerBasedImp1 geometry cannot be initialized with the V9 HGCAL+Nose geometry";
165 }

References Exception.

◆ lastTriggerLayer()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::lastTriggerLayer ( ) const
inlinefinalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 44 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

44 { return last_trigger_layer_; }

References last_trigger_layer_.

◆ layerWithOffset()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::layerWithOffset ( unsigned  id) const
private

Definition at line 771 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

771  {
772  HGCalDetId detid(id);
773  unsigned layer = 0;
774  switch (detid.subdetId()) {
776  layer = detid.layer();
777  break;
779  layer = fhOffset_ + detid.layer();
780  break;
782  layer = bhOffset_ + detid.layer();
783  break;
784  };
785  return layer;
786 }

References bhOffset_, fhOffset_, HGCEE, HGCHEB, HGCHEF, HGCalDetId::layer(), and DetId::subdetId().

Referenced by disconnectedModule(), and triggerLayer().

◆ packIetaIphi()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::packIetaIphi ( unsigned  ieta,
unsigned  iphi 
) const
private

Definition at line 645 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

645  {
646  unsigned packed_value = 0;
647  packed_value |= (iphi & HcalDetId::kHcalPhiMask2);
649  return packed_value;
650 }

References LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, HcalDetId::kHcalEtaMask2, HcalDetId::kHcalEtaOffset2, and HcalDetId::kHcalPhiMask2.

Referenced by fillMaps(), and getTriggerCellFromCell().

◆ packTriggerCell()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::packTriggerCell ( unsigned  module,
unsigned  trigger_cell 
) const
private

Definition at line 746 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

746  {
747  unsigned packed_value = 0;
748  packed_value |= ((trigger_cell & HGCalDetId::kHGCalCellMask) << HGCalDetId::kHGCalCellOffset);
750  return packed_value;
751 }

References HGCalDetId::kHGCalCellMask, HGCalDetId::kHGCalCellOffset, HGCalDetId::kHGCalWaferMask, and HGCalDetId::kHGCalWaferOffset.

Referenced by fillNeighborMaps(), and getNeighborsFromTriggerCell().

◆ packWaferCellId()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::packWaferCellId ( unsigned  subdet,
unsigned  wafer,
unsigned  cell 
) const
private

Definition at line 636 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

636  {
637  unsigned packed_value = 0;
638  const int kSubdetMask = 0x7;
639  packed_value |= ((cell & HGCalDetId::kHGCalCellMask) << HGCalDetId::kHGCalCellOffset);
640  packed_value |= ((wafer & HGCalDetId::kHGCalWaferMask) << HGCalDetId::kHGCalWaferOffset);
641  packed_value |= ((subdet & kSubdetMask) << (HGCalDetId::kHGCalWaferTypeOffset));
642  return packed_value;
643 }

References HGCalDetId::kHGCalCellMask, HGCalDetId::kHGCalCellOffset, HGCalDetId::kHGCalWaferMask, HGCalDetId::kHGCalWaferOffset, and HGCalDetId::kHGCalWaferTypeOffset.

Referenced by fillMaps(), getCellsFromTriggerCell(), and getTriggerCellFromCell().

◆ reset()

void HGCalTriggerGeometryHexLayerBasedImp1::reset ( void  )
finalvirtual

◆ triggerLayer()

unsigned HGCalTriggerGeometryHexLayerBasedImp1::triggerLayer ( const unsigned  id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 703 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

703  {
704  unsigned layer = layerWithOffset(id);
705  if (layer >= trigger_layers_.size())
706  return 0;
707  return trigger_layers_[layer];
708 }

References layerWithOffset(), and trigger_layers_.

◆ unpackIetaIphi()

void HGCalTriggerGeometryHexLayerBasedImp1::unpackIetaIphi ( unsigned  ieta_iphi,
unsigned &  ieta,
unsigned &  iphi 
) const
private

◆ unpackWaferCellId()

void HGCalTriggerGeometryHexLayerBasedImp1::unpackWaferCellId ( unsigned  wafer_cell,
unsigned &  wafer,
unsigned &  cell 
) const
private

◆ validCell()

bool HGCalTriggerGeometryHexLayerBasedImp1::validCell ( const unsigned  cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 664 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

664  {
665  bool is_valid = false;
666  if (DetId(cell_id).det() == DetId::Hcal) {
667  HcalDetId cell_det_id(cell_id);
668  if (cell_det_id.subdetId() != HcalEndcap)
669  is_valid = false;
670  else
671  is_valid = bhTopology().valid(cell_id);
672  } else if (DetId(cell_id).det() == DetId::Forward) {
673  HGCalDetId cell_det_id(cell_id);
674  unsigned subdet = cell_det_id.subdetId();
675  switch (subdet) {
677  is_valid = eeTopology().valid(cell_id);
678  break;
680  is_valid = fhTopology().valid(cell_id);
681  break;
682  default:
683  is_valid = false;
684  break;
685  }
686  }
687  return is_valid;
688 }

References HGCalTriggerGeometryBase::bhTopology(), HGCalTriggerGeometryBase::eeTopology(), HGCalTriggerGeometryBase::fhTopology(), DetId::Forward, DetId::Hcal, HcalEndcap, HGCEE, HGCHEF, DetId::subdetId(), HcalTopology::valid(), and HGCalTopology::valid().

◆ validCellId()

bool HGCalTriggerGeometryHexLayerBasedImp1::validCellId ( unsigned  subdet,
unsigned  cell_id 
) const
private

Definition at line 727 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

727  {
728  bool is_valid = false;
729  switch (subdet) {
731  is_valid = eeTopology().valid(cell_id);
732  break;
734  is_valid = fhTopology().valid(cell_id);
735  break;
737  is_valid = bhTopology().valid(cell_id);
738  break;
739  default:
740  is_valid = false;
741  break;
742  }
743  return is_valid;
744 }

References HGCalTriggerGeometryBase::bhTopology(), HGCalTriggerGeometryBase::eeTopology(), HGCalTriggerGeometryBase::fhTopology(), HGCEE, HGCHEB, HGCHEF, HcalTopology::valid(), and HGCalTopology::valid().

Referenced by getCellsFromTriggerCell(), and validTriggerCellFromCells().

◆ validTriggerCell()

bool HGCalTriggerGeometryHexLayerBasedImp1::validTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

◆ validTriggerCellFromCells()

bool HGCalTriggerGeometryHexLayerBasedImp1::validTriggerCellFromCells ( const unsigned  trigger_cell_id) const
private

Definition at line 710 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

710  {
711  // Check the validity of a trigger cell with the
712  // validity of the cells. One valid cell in the
713  // trigger cell is enough to make the trigger cell
714  // valid.
715  HGCalDetId trigger_cell_det_id(trigger_cell_id);
716  unsigned subdet = trigger_cell_det_id.subdetId();
717  const geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
718  bool is_valid = false;
719  for (const auto cell_id : cells) {
720  is_valid |= validCellId(subdet, cell_id);
721  if (is_valid)
722  break;
723  }
724  return is_valid;
725 }

References postprocess-scan-build::cells, getCellsFromTriggerCell(), DetId::subdetId(), and validCellId().

Referenced by fillInvalidTriggerCells().

Member Data Documentation

◆ bhOffset_

unsigned HGCalTriggerGeometryHexLayerBasedImp1::bhOffset_ = 0
private

Definition at line 82 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by initialize(), and layerWithOffset().

◆ cells_to_trigger_cells_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryHexLayerBasedImp1::cells_to_trigger_cells_
private

◆ cells_to_trigger_cells_bh_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryHexLayerBasedImp1::cells_to_trigger_cells_bh_
private

◆ disconnected_layers_

std::unordered_set<unsigned> HGCalTriggerGeometryHexLayerBasedImp1::disconnected_layers_
private

◆ disconnected_modules_

std::unordered_set<unsigned> HGCalTriggerGeometryHexLayerBasedImp1::disconnected_modules_
private

◆ fhOffset_

unsigned HGCalTriggerGeometryHexLayerBasedImp1::fhOffset_ = 0
private

Definition at line 81 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by initialize(), and layerWithOffset().

◆ invalid_triggercells_

std::unordered_set<unsigned> HGCalTriggerGeometryHexLayerBasedImp1::invalid_triggercells_
private

◆ l1tCellNeighborsBHMapping_

edm::FileInPath HGCalTriggerGeometryHexLayerBasedImp1::l1tCellNeighborsBHMapping_
private

Definition at line 52 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by initialize().

◆ l1tCellNeighborsMapping_

edm::FileInPath HGCalTriggerGeometryHexLayerBasedImp1::l1tCellNeighborsMapping_
private

Definition at line 51 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by initialize().

◆ l1tCellsBHMapping_

edm::FileInPath HGCalTriggerGeometryHexLayerBasedImp1::l1tCellsBHMapping_
private

Definition at line 49 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by fillMaps().

◆ l1tCellsMapping_

edm::FileInPath HGCalTriggerGeometryHexLayerBasedImp1::l1tCellsMapping_
private

Definition at line 48 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by fillMaps().

◆ l1tModulesMapping_

edm::FileInPath HGCalTriggerGeometryHexLayerBasedImp1::l1tModulesMapping_
private

Definition at line 50 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by fillMaps().

◆ last_trigger_layer_

unsigned HGCalTriggerGeometryHexLayerBasedImp1::last_trigger_layer_ = 0
private

Definition at line 78 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by initialize(), and lastTriggerLayer().

◆ module_to_wafers_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryHexLayerBasedImp1::module_to_wafers_
private

◆ number_trigger_cells_in_wafers_

std::unordered_map<unsigned, unsigned short> HGCalTriggerGeometryHexLayerBasedImp1::number_trigger_cells_in_wafers_
private

◆ number_trigger_cells_in_wafers_bh_

std::unordered_map<unsigned, unsigned short> HGCalTriggerGeometryHexLayerBasedImp1::number_trigger_cells_in_wafers_bh_
private

◆ totalLayers_

unsigned HGCalTriggerGeometryHexLayerBasedImp1::totalLayers_ = 0
private

Definition at line 83 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by initialize().

◆ trigger_cell_neighbors_

std::unordered_map<int, std::set<std::pair<short, short> > > HGCalTriggerGeometryHexLayerBasedImp1::trigger_cell_neighbors_
private

◆ trigger_cell_neighbors_bh_

std::unordered_map<int, std::set<std::pair<short, short> > > HGCalTriggerGeometryHexLayerBasedImp1::trigger_cell_neighbors_bh_
private

◆ trigger_cells_to_cells_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryHexLayerBasedImp1::trigger_cells_to_cells_
private

◆ trigger_cells_to_cells_bh_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryHexLayerBasedImp1::trigger_cells_to_cells_bh_
private

◆ trigger_layers_

std::vector<unsigned> HGCalTriggerGeometryHexLayerBasedImp1::trigger_layers_
private

Definition at line 77 of file HGCalTriggerGeometryHexLayerBasedImp1.cc.

Referenced by initialize(), and triggerLayer().

◆ wafer_to_module_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryHexLayerBasedImp1::wafer_to_module_
private
HGCalTriggerGeometryHexLayerBasedImp1::validTriggerCell
bool validTriggerCell(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:690
HGCalTriggerGeometryHexLayerBasedImp1::trigger_cell_neighbors_bh_
std::unordered_map< int, std::set< std::pair< short, short > > > trigger_cell_neighbors_bh_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:72
HGCalTriggerGeometryBase::eeTopology
const HGCalTopology & eeTopology() const
Definition: HGCalTriggerGeometryBase.h:65
mps_fire.i
i
Definition: mps_fire.py:355
HGCalTopology::dddConstants
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:98
HGCalDDDConstants::waferTypeT
int waferTypeT(int wafer) const
Definition: HGCalDDDConstants.h:169
HGCalDetId::kHGCalWaferOffset
static const int kHGCalWaferOffset
Definition: HGCalDetId.h:12
ecaldqm::zside
int zside(DetId const &)
Definition: EcalDQMCommonUtils.cc:189
ForwardSubdetector
ForwardSubdetector
Definition: ForwardSubdetector.h:4
HGCalTriggerGeometryHexLayerBasedImp1::l1tCellNeighborsBHMapping_
edm::FileInPath l1tCellNeighborsBHMapping_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:52
HGCalTriggerGeometryHexLayerBasedImp1::validTriggerCellFromCells
bool validTriggerCellFromCells(const unsigned) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:710
HGCalTriggerGeometryHexLayerBasedImp1::packTriggerCell
unsigned packTriggerCell(unsigned, unsigned) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:746
DetId::Hcal
Definition: DetId.h:28
HGCalTriggerGeometryHexLayerBasedImp1::bhOffset_
unsigned bhOffset_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:82
HGCalTriggerGeometryHexLayerBasedImp1::number_trigger_cells_in_wafers_
std::unordered_map< unsigned, unsigned short > number_trigger_cells_in_wafers_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:63
HcalDetId::kHcalEtaOffset2
static constexpr uint32_t kHcalEtaOffset2
Definition: HcalDetId.h:17
HGCalTriggerGeometryHexLayerBasedImp1::totalLayers_
unsigned totalLayers_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:83
HGCalTriggerGeometryHexLayerBasedImp1::l1tCellsBHMapping_
edm::FileInPath l1tCellsBHMapping_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:49
HGCalTriggerGeometryHexLayerBasedImp1::trigger_cells_to_cells_
std::unordered_multimap< unsigned, unsigned > trigger_cells_to_cells_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:60
HGCalTriggerGeometryHexLayerBasedImp1::getCellsFromModule
geom_set getCellsFromModule(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:293
HGCalTriggerGeometryHexLayerBasedImp1::packWaferCellId
unsigned packWaferCellId(unsigned subdet, unsigned wafer, unsigned cell) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:636
HGCalTriggerGeometryHexLayerBasedImp1::packIetaIphi
unsigned packIetaIphi(unsigned ieta, unsigned iphi) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:645
end
#define end
Definition: vmac.h:39
edmScanValgrind.buffer
buffer
Definition: edmScanValgrind.py:171
HGCalTriggerGeometryHexLayerBasedImp1::fillMaps
void fillMaps()
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:485
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
HGCalDetId::kHGCalWaferMask
static const int kHGCalWaferMask
Definition: HGCalDetId.h:13
HGCalTriggerGeometryHexLayerBasedImp1::unpackIetaIphi
void unpackIetaIphi(unsigned ieta_iphi, unsigned &ieta, unsigned &iphi) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:659
DetId
Definition: DetId.h:17
edm::FileInPath
Definition: FileInPath.h:64
HGCalTriggerGeometryHexLayerBasedImp1::l1tModulesMapping_
edm::FileInPath l1tModulesMapping_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:50
HGCalTriggerGeometryHexLayerBasedImp1::l1tCellsMapping_
edm::FileInPath l1tCellsMapping_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:48
HGCalTriggerGeometryHexLayerBasedImp1::validCellId
bool validCellId(unsigned subdet, unsigned cell_id) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:727
HGCalTriggerGeometryHexLayerBasedImp1::layerWithOffset
unsigned layerWithOffset(unsigned) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:771
HcalDetId::kHcalPhiMask2
static constexpr uint32_t kHcalPhiMask2
Definition: HcalDetId.h:15
HGCalTriggerGeometryHexLayerBasedImp1::cells_to_trigger_cells_
std::unordered_map< unsigned, unsigned > cells_to_trigger_cells_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:59
HGCalTriggerGeometryHexLayerBasedImp1::getModuleFromTriggerCell
unsigned getModuleFromTriggerCell(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:218
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
HGCalTriggerGeometryHexLayerBasedImp1::getOrderedTriggerCellsFromModule
geom_ordered_set getOrderedTriggerCellsFromModule(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:357
HGCalTriggerGeometryHexLayerBasedImp1::number_trigger_cells_in_wafers_bh_
std::unordered_map< unsigned, unsigned short > number_trigger_cells_in_wafers_bh_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:64
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
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HGCalTriggerGeometryBase::fhGeometry
const HGCalGeometry * fhGeometry() const
Definition: HGCalTriggerGeometryBase.h:46
HGCEE
Definition: ForwardSubdetector.h:8
edm::LogWarning
Definition: MessageLogger.h:141
HGCalTriggerGeometryHexLayerBasedImp1::getTriggerCellFromCell
unsigned getTriggerCellFromCell(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:167
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
HGCalTriggerGeometryHexLayerBasedImp1::getCellsFromTriggerCell
geom_set getCellsFromTriggerCell(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:247
HcalGeometry::getPosition
GlobalPoint getPosition(const DetId &id) const
Definition: HcalGeometry.cc:178
HGCalTriggerGeometryHexLayerBasedImp1::wafer_to_module_
std::unordered_map< unsigned, unsigned > wafer_to_module_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:55
HGCalTriggerGeometryHexLayerBasedImp1::trigger_layers_
std::vector< unsigned > trigger_layers_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:77
HGCalTriggerGeometryHexLayerBasedImp1::getTriggerCellsFromModule
geom_set getTriggerCellsFromModule(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:315
HGCalTriggerGeometryHexLayerBasedImp1::getNeighborsFromTriggerCell
geom_set getNeighborsFromTriggerCell(const unsigned) const final
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:399
HGCalTriggerGeometryBase::geom_ordered_set
std::set< unsigned > geom_ordered_set
Definition: HGCalTriggerGeometryBase.h:23
HcalTopology::dddConstants
const HcalDDDRecConstants * dddConstants() const
Definition: HcalTopology.h:164
HGCalTriggerGeometryHexLayerBasedImp1::unpackWaferCellId
void unpackWaferCellId(unsigned wafer_cell, unsigned &wafer, unsigned &cell) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:652
HGCalDDDConstants::layers
unsigned int layers(bool reco) const
Definition: HGCalDDDConstants.cc:558
HGCalTriggerGeometryHexLayerBasedImp1::disconnected_layers_
std::unordered_set< unsigned > disconnected_layers_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:76
HcalDetId
Definition: HcalDetId.h:12
FrontierConditions_GlobalTag_cff.file
file
Definition: FrontierConditions_GlobalTag_cff.py:13
HGCalTriggerGeometryHexLayerBasedImp1::invalid_triggercells_
std::unordered_set< unsigned > invalid_triggercells_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:65
HGCalTriggerGeometryHexLayerBasedImp1::trigger_cell_neighbors_
std::unordered_map< int, std::set< std::pair< short, short > > > trigger_cell_neighbors_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:71
HGCalTriggerGeometryBase::bhTopology
const HcalTopology & bhTopology() const
Definition: HGCalTriggerGeometryBase.h:67
HGCalTriggerGeometryBase::geom_set
std::unordered_set< unsigned > geom_set
Definition: HGCalTriggerGeometryBase.h:22
HGCalGeometry::getPosition
GlobalPoint getPosition(const DetId &id) const
Definition: HGCalGeometry.cc:192
module
Definition: vlib.h:198
HGCalDetId::kHGCalWaferTypeOffset
static const int kHGCalWaferTypeOffset
Definition: HGCalDetId.h:14
PV3DBase::basicVector
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
HGCalTriggerGeometryHexLayerBasedImp1::detIdWaferType
int detIdWaferType(unsigned subdet, short wafer) const
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:753
HcalTopology::valid
bool valid(const DetId &id) const override
Definition: HcalTopology.cc:225
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
HGCalTriggerGeometryHexLayerBasedImp1::module_to_wafers_
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:56
HGCalDetId
Definition: HGCalDetId.h:8
HGCalTriggerGeometryBase::eeGeometry
const HGCalGeometry * eeGeometry() const
Definition: HGCalTriggerGeometryBase.h:41
HGCalDetId::kHGCalCellMask
static const int kHGCalCellMask
Definition: HGCalDetId.h:11
eostools.move
def move(src, dest)
Definition: eostools.py:511
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
HGCalTriggerGeometryHexLayerBasedImp1::l1tCellNeighborsMapping_
edm::FileInPath l1tCellNeighborsMapping_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:51
HcalEndcap
Definition: HcalAssistant.h:34
HGCalTriggerGeometryHexLayerBasedImp1::cells_to_trigger_cells_bh_
std::unordered_map< unsigned, unsigned > cells_to_trigger_cells_bh_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:61
Exception
Definition: hltDiff.cc:246
postprocess-scan-build.cells
cells
Definition: postprocess-scan-build.py:13
HGCalDetId::kHGCalCellOffset
static const int kHGCalCellOffset
Definition: HGCalDetId.h:10
HGCalTriggerGeometryHexLayerBasedImp1::fillNeighborMaps
void fillNeighborMaps(const edm::FileInPath &, std::unordered_map< int, std::set< std::pair< short, short >>> &)
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:555
HGCalTriggerGeometryBase::setCaloGeometry
void setCaloGeometry(const CaloGeometry *geom)
Definition: HGCalTriggerGeometryBase.h:106
HGCalTriggerGeometryHexLayerBasedImp1::trigger_cells_to_cells_bh_
std::unordered_multimap< unsigned, unsigned > trigger_cells_to_cells_bh_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:62
HcalDDDRecConstants::getMaxDepth
int getMaxDepth(const int &type) const
Definition: HcalDDDRecConstants.h:88
HcalDetId::kHcalEtaMask2
static constexpr uint32_t kHcalEtaMask2
Definition: HcalDetId.h:19
HGCalTriggerGeometryBase::HGCalTriggerGeometryBase
HGCalTriggerGeometryBase(const edm::ParameterSet &conf)
Definition: HGCalTriggerGeometryBase.cc:3
HGCalTopology::valid
bool valid(const DetId &id) const override
Is this a valid cell id.
Definition: HGCalTopology.cc:464
HGCHEF
Definition: ForwardSubdetector.h:9
HGCalTriggerGeometryHexLayerBasedImp1::last_trigger_layer_
unsigned last_trigger_layer_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:78
DetId::Forward
Definition: DetId.h:30
mps_splice.line
line
Definition: mps_splice.py:76
HGCalTriggerGeometryHexLayerBasedImp1::fillInvalidTriggerCells
void fillInvalidTriggerCells()
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:611
begin
#define begin
Definition: vmac.h:32
HGCalTriggerGeometryHexLayerBasedImp1::fhOffset_
unsigned fhOffset_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:81
HGCalTriggerGeometryBase::bhGeometry
const HcalGeometry * bhGeometry() const
Definition: HGCalTriggerGeometryBase.h:51
Basic3DVector< float >
edm::FileInPath::fullPath
std::string fullPath() const
Definition: FileInPath.cc:163
HGCalTriggerGeometryHexLayerBasedImp1::disconnected_modules_
std::unordered_set< unsigned > disconnected_modules_
Definition: HGCalTriggerGeometryHexLayerBasedImp1.cc:75
HGCHEB
Definition: ForwardSubdetector.h:10
HGCalTriggerGeometryBase::fhTopology
const HGCalTopology & fhTopology() const
Definition: HGCalTriggerGeometryBase.h:66