CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
HGCalTriggerGeometryV9Imp3 Class Reference
Inheritance diagram for HGCalTriggerGeometryV9Imp3:
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
 
geom_set getLpgbtsFromModule (const unsigned) const final
 
geom_set getLpgbtsFromStage1Fpga (const unsigned) const final
 
unsigned getModuleFromCell (const unsigned) const final
 
unsigned getModuleFromTriggerCell (const unsigned) const final
 
GlobalPoint getModulePosition (const unsigned) const final
 
geom_set getModulesFromLpgbt (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 getStage1FpgaFromLpgbt (const unsigned) const final
 
unsigned getStage1FpgaFromModule (const unsigned module_id) const final
 
unsigned getStage1FpgaFromStage1Link (const unsigned) const final
 
geom_set getStage1FpgasFromStage2Fpga (const unsigned) const final
 
geom_set getStage1LinksFromStage1Fpga (const unsigned) const final
 
geom_set getStage1LinksFromStage2Fpga (const unsigned) const final
 
unsigned getStage2FpgaFromStage1Link (const unsigned) const final
 
geom_set getStage2FpgasFromStage1Fpga (const unsigned) const final
 
unsigned getTriggerCellFromCell (const unsigned) const final
 
GlobalPoint getTriggerCellPosition (const unsigned) const final
 
geom_set getTriggerCellsFromModule (const unsigned) const final
 
 HGCalTriggerGeometryV9Imp3 (const edm::ParameterSet &conf)
 
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 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 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 det, unsigned layer, short waferU, short waferV) const
 
void etaphiMappingFromSector0 (int &ieta, int &iphi, unsigned sector) const
 
void fillMaps ()
 
unsigned getNextSector (const unsigned sector) const
 
unsigned getPreviousSector (const unsigned sector) const
 
void getScintillatoriEtaiPhi (int &ieta, int &iphi, int tc_eta, int tc_phi, unsigned layer) const
 
HGCalGeomRotation::WaferCentring getWaferCentring (unsigned layer, int subdet) const
 
unsigned layerWithOffset (unsigned) const
 
void layerWithoutOffsetAndSubdetId (unsigned &layer, int &subdetId, bool isSilicon) const
 
unsigned packLayerSubdetWaferId (unsigned layer, int subdet, int waferU, int waferV) const
 
unsigned tcEtaphiMappingToSector0 (int &tc_ieta, int &tc_iphi) const
 
void unpackLayerSubdetWaferId (unsigned wafer, unsigned &layer, int &subdet, int &waferU, int &waferV) const
 
bool validCellId (unsigned det, unsigned cell_id) const
 
bool validTriggerCellFromCells (const unsigned) const
 

Private Attributes

std::unordered_set< unsigned > disconnected_layers_
 
HGCalGeomRotation geom_rotation_120_ = {HGCalGeomRotation::SectorType::Sector120Degrees}
 
unsigned heOffset_ = 0
 
unsigned hSc_triggercell_size_ = 2
 
edm::FileInPath jsonMappingFile_
 
unsigned last_trigger_layer_ = 0
 
std::unordered_map< unsigned, unsigned > links_per_module_
 
std::unordered_multimap< unsigned, unsigned > lpgbt_to_modules_
 
std::unordered_map< unsigned, unsigned > lpgbt_to_stage1_
 
std::unordered_multimap< unsigned, unsigned > module_to_lpgbts_
 
std::unordered_map< unsigned, unsigned > module_to_stage1_
 
unsigned noseLayers_ = 0
 
std::unordered_multimap< unsigned, unsigned > stage1_to_lpgbts_
 
std::unordered_multimap< unsigned, unsigned > stage1_to_stage1links_
 
std::unordered_map< unsigned, unsigned > stage1link_to_stage1_
 
std::unordered_map< unsigned, unsigned > stage1link_to_stage2_
 
std::unordered_map< unsigned, bool > stage1links_samesector_
 
std::unordered_multimap< unsigned, unsigned > stage2_to_stage1links_
 
unsigned totalLayers_ = 0
 
std::vector< unsigned > trigger_layers_
 
std::vector< unsigned > trigger_nose_layers_
 

Static Private Attributes

static constexpr unsigned hSc_back_layers_split_ = 8
 
static constexpr unsigned hSc_front_layers_split_ = 12
 
static constexpr unsigned hSc_layer_for_split_ = 40
 
static constexpr unsigned hSc_num_panels_per_sector_ = 12
 
static constexpr int hSc_tc_layer0_min_ = 24
 
static constexpr unsigned hSc_tcs_per_module_phi_ = 4
 
static constexpr int nSectors_ = 3
 
static constexpr int ntc_per_wafer_ = 48
 

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 setEEGeometry (const HGCalGeometry *geom)
 
void setHScGeometry (const HGCalGeometry *geom)
 
void setHSiGeometry (const HGCalGeometry *geom)
 
void setNoseGeometry (const HGCalGeometry *geom)
 

Detailed Description

Definition at line 20 of file HGCalTriggerGeometryV9Imp3.cc.

Constructor & Destructor Documentation

◆ HGCalTriggerGeometryV9Imp3()

HGCalTriggerGeometryV9Imp3::HGCalTriggerGeometryV9Imp3 ( const edm::ParameterSet conf)

Definition at line 125 of file HGCalTriggerGeometryV9Imp3.cc.

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

126  : HGCalTriggerGeometryBase(conf),
127  hSc_triggercell_size_(conf.getParameter<unsigned>("ScintillatorTriggerCellSize")),
128  jsonMappingFile_(conf.getParameter<edm::FileInPath>("JsonMappingFile")) {
129  std::vector<unsigned> tmp_vector = conf.getParameter<std::vector<unsigned>>("DisconnectedLayers");
130  std::move(tmp_vector.begin(), tmp_vector.end(), std::inserter(disconnected_layers_, disconnected_layers_.end()));
131 }
HGCalTriggerGeometryBase(const edm::ParameterSet &conf)
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
def move(src, dest)
Definition: eostools.py:511
std::unordered_set< unsigned > disconnected_layers_

Member Function Documentation

◆ detIdWaferType()

int HGCalTriggerGeometryV9Imp3::detIdWaferType ( unsigned  det,
unsigned  layer,
short  waferU,
short  waferV 
) const
private

Definition at line 1092 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalTopology::dddConstants(), HGCalTriggerGeometryBase::eeTopology(), HGCalDDDConstants::getTypeHex(), HGCalDDDConstants::getTypeTrap(), DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, HGCalTriggerGeometryBase::hscTopology(), HGCalTriggerGeometryBase::hsiTopology(), pixelTopology::layer, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

Referenced by getModulesFromLpgbt(), getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

1092  {
1093  int wafer_type = 0;
1094  switch (det) {
1095  case DetId::HGCalEE:
1096  wafer_type = eeTopology().dddConstants().getTypeHex(layer, waferU, waferV);
1097  break;
1098  case DetId::HGCalHSi:
1099  wafer_type = hsiTopology().dddConstants().getTypeHex(layer, waferU, waferV);
1100  break;
1101  case DetId::HGCalHSc:
1102  wafer_type = hscTopology().dddConstants().getTypeTrap(layer);
1103  break;
1104  default:
1105  break;
1106  };
1107  return wafer_type;
1108 }
int32_t waferU(const int32_t index)
const HGCalTopology & eeTopology() const
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
int getTypeHex(int layer, int waferU, int waferV) const
int getTypeTrap(int layer) const
const HGCalTopology & hscTopology() const
int32_t waferV(const int32_t index)
const HGCalTopology & hsiTopology() const
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:98

◆ disconnectedModule()

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

Implements HGCalTriggerGeometryBase.

Definition at line 1004 of file HGCalTriggerGeometryV9Imp3.cc.

References disconnected_layers_, l1ctLayer2EG_cff::id, pixelTopology::layer, layerWithOffset(), module_to_stage1_, and packLayerSubdetWaferId().

1004  {
1005  bool disconnected = false;
1006  HGCalTriggerModuleDetId id(module_id);
1007  if (module_to_stage1_.find(packLayerSubdetWaferId(id.layer(), id.triggerSubdetId(), id.moduleU(), id.moduleV())) ==
1008  module_to_stage1_.end()) {
1009  disconnected = true;
1010  }
1011  if (disconnected_layers_.find(layerWithOffset(module_id)) != disconnected_layers_.end()) {
1012  disconnected = true;
1013  }
1014  return disconnected;
1015 }
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
unsigned layerWithOffset(unsigned) const
std::unordered_map< unsigned, unsigned > module_to_stage1_
unsigned packLayerSubdetWaferId(unsigned layer, int subdet, int waferU, int waferV) const
std::unordered_set< unsigned > disconnected_layers_

◆ etaphiMappingFromSector0()

void HGCalTriggerGeometryV9Imp3::etaphiMappingFromSector0 ( int &  ieta,
int &  iphi,
unsigned  sector 
) const
private

Definition at line 931 of file HGCalTriggerGeometryV9Imp3.cc.

References hSc_num_panels_per_sector_, LEDCalibrationChannels::iphi, and hgcalTBTopologyTester_cfi::sector.

Referenced by getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

931  {
932  if (sector == 0) {
933  return;
934  }
935  if (sector == 2) {
937  } else if (sector == 1) {
939  }
940 }
static constexpr unsigned hSc_num_panels_per_sector_

◆ fillMaps()

void HGCalTriggerGeometryV9Imp3::fillMaps ( )
private

Definition at line 799 of file HGCalTriggerGeometryV9Imp3.cc.

References MillePedeFileConverter_cfg::e, cppFunctionSkipper::exception, Exception, edm::FileInPath::fullPath(), jsonMappingFile_, pixelTopology::layer, layerWithoutOffsetAndSubdetId(), links_per_module_, lpgbt_to_modules_, lpgbt_to_stage1_, callgraph::module, module_to_lpgbts_, module_to_stage1_, packLayerSubdetWaferId(), mps_fire::result, stage1_to_lpgbts_, stage1_to_stage1links_, stage1link_to_stage1_, stage1link_to_stage2_, stage1links_samesector_, and stage2_to_stage1links_.

Referenced by initialize().

799  {
800  // read json mapping file
801  json mapping_config;
802  std::ifstream json_input_file(jsonMappingFile_.fullPath());
803  if (!json_input_file.is_open()) {
804  throw cms::Exception("MissingDataFile") << "Cannot open HGCalTriggerGeometry L1TMapping file\n";
805  }
806  json_input_file >> mapping_config;
807 
808  try {
809  //Stage 2 to Stage 1 links mapping
810  for (unsigned stage2_id = 0; stage2_id < mapping_config.at("Stage2").size(); stage2_id++) {
811  for (unsigned link_id = 0; link_id < mapping_config.at("Stage2").at(stage2_id).at("Stage1Links").size();
812  link_id++) {
813  stage2_to_stage1links_.emplace(stage2_id, link_id);
814  stage1links_samesector_.emplace(
815  link_id, mapping_config.at("Stage2").at(stage2_id).at("Stage1Links").at(link_id).at("SameSector"));
816  }
817  }
818  } catch (const json::exception& e) {
819  edm::LogError("HGCalTriggerGeometryV9Imp3")
820  << "The mapping input json file does not have the expected structure for the Stage2 block";
821  }
822 
823  try {
824  for (unsigned link_id = 0; link_id < mapping_config.at("Stage1Links").size(); link_id++) {
825  //Stage 1 links to Stage 1 FPGAs mapping
826  stage1link_to_stage1_.emplace(link_id, mapping_config.at("Stage1Links").at(link_id).at("Stage1"));
827 
828  //Stage 1 links to Stage 2 mapping
829  stage1link_to_stage2_.emplace(link_id, mapping_config.at("Stage1Links").at(link_id).at("Stage2SameSector"));
830  }
831  } catch (const json::exception& e) {
832  edm::LogError("HGCalTriggerGeometryV9Imp3")
833  << "The mapping input json file does not have the expected structure for the Stage1Links block";
834  }
835 
836  try {
837  for (unsigned stage1_id = 0; stage1_id < mapping_config.at("Stage1").size(); stage1_id++) {
838  //Stage 1 to Stage 1 links mapping
839  for (auto& link_id : mapping_config.at("Stage1").at(stage1_id).at("Stage1Links")) {
840  stage1_to_stage1links_.emplace(stage1_id, link_id);
841  }
842 
843  //Stage 1 to lpgbt mapping
844  for (auto& lpgbt_id : mapping_config.at("Stage1").at(stage1_id).at("lpgbts")) {
845  stage1_to_lpgbts_.emplace(stage1_id, lpgbt_id);
846  }
847  }
848 
849  } catch (const json::exception& e) {
850  edm::LogError("HGCalTriggerGeometryV9Imp3")
851  << "The mapping input json file does not have the expected structure for the Stage1 block";
852  }
853 
854  try {
855  for (unsigned lpgbt_id = 0; lpgbt_id < mapping_config.at("lpgbt").size(); lpgbt_id++) {
856  //lpgbt to Stage 1 mapping
857  unsigned stage1_id = mapping_config.at("lpgbt").at(lpgbt_id).at("Stage1");
858  lpgbt_to_stage1_.emplace(lpgbt_id, stage1_id);
859 
860  //lpgbt to module mapping
861  for (auto& modules : mapping_config.at("lpgbt").at(lpgbt_id).at("Modules")) {
862  unsigned layer = modules.at("layer");
863  int subdetId = 0;
864  bool isSilicon = modules.at("isSilicon");
865  layerWithoutOffsetAndSubdetId(layer, subdetId, isSilicon);
866  unsigned packed_value = packLayerSubdetWaferId(layer, subdetId, modules.at("u"), modules.at("v"));
867  lpgbt_to_modules_.emplace(lpgbt_id, packed_value);
868 
869  //fill subsiduary module to stage 1 mapping
870  auto result = module_to_stage1_.emplace(packed_value, stage1_id);
871  if (result.second == false &&
872  stage1_id != result.first->second) { //check that the stage1_id is the same as in the existing map
873  edm::LogError("HGCalTriggerGeometryV9Imp3") << "One module is connected to two separate Stage1 FPGAs";
874  }
875  }
876  }
877 
878  } catch (const json::exception& e) {
879  edm::LogError("HGCalTriggerGeometryV9Imp3")
880  << "The mapping input json file does not have the expected structure for the lpGBT block";
881  }
882 
883  try {
884  //module to lpgbt mapping
885  for (unsigned module = 0; module < mapping_config.at("Module").size(); module++) {
886  unsigned num_elinks = 0; //Sum number of e-links in each module over lpGBTs
887  unsigned layer = mapping_config.at("Module").at(module).at("layer");
888  unsigned moduleU = mapping_config.at("Module").at(module).at("u");
889  unsigned moduleV = mapping_config.at("Module").at(module).at("v");
890  bool isSilicon = mapping_config.at("Module").at(module).at("isSilicon");
891  int subdetId = 0;
892  layerWithoutOffsetAndSubdetId(layer, subdetId, isSilicon);
893 
894  for (auto& lpgbt : mapping_config.at("Module").at(module).at("lpgbts")) {
895  module_to_lpgbts_.emplace(packLayerSubdetWaferId(layer, subdetId, moduleU, moduleV), lpgbt.at("id"));
896  num_elinks += unsigned(lpgbt.at("nElinks"));
897  }
898  int packed_module = packLayerSubdetWaferId(layer, subdetId, moduleU, moduleV);
899  links_per_module_.emplace(packed_module, num_elinks);
900  }
901  } catch (const json::exception& e) {
902  edm::LogError("HGCalTriggerGeometryV9Imp3")
903  << "The mapping input json file does not have the expected structure for the Module block";
904  }
905 
906  json_input_file.close();
907 }
std::unordered_map< unsigned, unsigned > links_per_module_
std::unordered_map< unsigned, unsigned > stage1link_to_stage1_
std::unordered_multimap< unsigned, unsigned > stage1_to_stage1links_
std::string fullPath() const
Definition: FileInPath.cc:161
nlohmann::json json
std::unordered_multimap< unsigned, unsigned > lpgbt_to_modules_
std::unordered_map< unsigned, unsigned > lpgbt_to_stage1_
std::unordered_multimap< unsigned, unsigned > stage2_to_stage1links_
Log< level::Error, false > LogError
std::unordered_map< unsigned, bool > stage1links_samesector_
std::unordered_multimap< unsigned, unsigned > module_to_lpgbts_
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
std::unordered_multimap< unsigned, unsigned > stage1_to_lpgbts_
std::unordered_map< unsigned, unsigned > stage1link_to_stage2_
std::unordered_map< unsigned, unsigned > module_to_stage1_
unsigned packLayerSubdetWaferId(unsigned layer, int subdet, int waferU, int waferV) const
void layerWithoutOffsetAndSubdetId(unsigned &layer, int &subdetId, bool isSilicon) const

◆ getCellsFromModule()

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

Implements HGCalTriggerGeometryBase.

Definition at line 359 of file HGCalTriggerGeometryV9Imp3.cc.

References hgcalTBTopologyTester_cfi::cells, getCellsFromTriggerCell(), and getTriggerCellsFromModule().

Referenced by getModulePosition().

359  {
360  geom_set cell_det_ids;
361  geom_set trigger_cells = getTriggerCellsFromModule(module_id);
362 
363  for (auto trigger_cell_id : trigger_cells) {
364  geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
365  cell_det_ids.insert(cells.begin(), cells.end());
366  }
367  return cell_det_ids;
368 }
geom_set getTriggerCellsFromModule(const unsigned) const final
std::unordered_set< unsigned > geom_set
geom_set getCellsFromTriggerCell(const unsigned) const final

◆ getCellsFromTriggerCell()

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

Implements HGCalTriggerGeometryBase.

Definition at line 302 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalTriggerDetId::cellU(), HFNoseTriggerDetId::cellU(), HGCalTriggerDetId::cellV(), HFNoseTriggerDetId::cellV(), DetId::det(), HFNoseTrigger, DetId::HGCalEE, HGCalEETrigger, DetId::HGCalHSc, DetId::HGCalHSi, HGCalHSiTrigger, DetId::HGCalTrigger, hSc_triggercell_size_, LEDCalibrationChannels::ieta, HGCScintillatorDetId::ietaAbs(), createfilelist::int, HGCScintillatorDetId::iphi(), LEDCalibrationChannels::iphi, HGCScintillatorDetId::layer(), HFNoseTriggerDetId::layer(), HGCalTriggerDetId::layer(), pixelTopology::layer, HGCalTriggerDetId::subdet(), HGCScintillatorDetId::type(), HFNoseTriggerDetId::type(), HGCalTriggerDetId::type(), validCellId(), HFNoseTriggerDetId::waferU(), HGCalTriggerDetId::waferU(), HFNoseTriggerDetId::waferV(), HGCalTriggerDetId::waferV(), HGCScintillatorDetId::zside(), HFNoseTriggerDetId::zside(), HGCalTriggerDetId::zside(), and ecaldqm::zside().

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

303  {
304  DetId trigger_cell_det_id(trigger_cell_id);
305  unsigned det = trigger_cell_det_id.det();
306  geom_set cell_det_ids;
307  // Scintillator
308  if (det == DetId::HGCalHSc) {
309  HGCScintillatorDetId trigger_cell_sc_id(trigger_cell_id);
310  int ieta0 = (trigger_cell_sc_id.ietaAbs() - 1) * hSc_triggercell_size_ + 1;
311  int iphi0 = (trigger_cell_sc_id.iphi() - 1) * hSc_triggercell_size_ + 1;
312  for (int ietaAbs = ieta0; ietaAbs < ieta0 + (int)hSc_triggercell_size_; ietaAbs++) {
313  int ieta = ietaAbs * trigger_cell_sc_id.zside();
314  for (int iphi = iphi0; iphi < iphi0 + (int)hSc_triggercell_size_; iphi++) {
315  unsigned cell_id = HGCScintillatorDetId(trigger_cell_sc_id.type(), trigger_cell_sc_id.layer(), ieta, iphi);
316  if (validCellId(DetId::HGCalHSc, cell_id))
317  cell_det_ids.emplace(cell_id);
318  }
319  }
320  }
321  // HFNose
322  else if (det == DetId::HGCalTrigger and
323  HGCalTriggerDetId(trigger_cell_id).subdet() == HGCalTriggerSubdetector::HFNoseTrigger) {
324  HFNoseTriggerDetId trigger_cell_nose_id(trigger_cell_id);
325  int layer = trigger_cell_nose_id.layer();
326  int zside = trigger_cell_nose_id.zside();
327  int type = trigger_cell_nose_id.type();
328  int waferu = trigger_cell_nose_id.waferU();
329  int waferv = trigger_cell_nose_id.waferV();
330  std::vector<int> cellus = trigger_cell_nose_id.cellU();
331  std::vector<int> cellvs = trigger_cell_nose_id.cellV();
332  for (unsigned ic = 0; ic < cellus.size(); ic++) {
333  HFNoseDetId cell_det_id(zside, type, layer, waferu, waferv, cellus[ic], cellvs[ic]);
334  cell_det_ids.emplace(cell_det_id);
335  }
336  }
337  // Silicon
338  else {
339  HGCalTriggerDetId trigger_cell_trig_id(trigger_cell_id);
340  unsigned subdet = trigger_cell_trig_id.subdet();
343  int layer = trigger_cell_trig_id.layer();
344  int zside = trigger_cell_trig_id.zside();
345  int type = trigger_cell_trig_id.type();
346  int waferu = trigger_cell_trig_id.waferU();
347  int waferv = trigger_cell_trig_id.waferV();
348  std::vector<int> cellus = trigger_cell_trig_id.cellU();
349  std::vector<int> cellvs = trigger_cell_trig_id.cellV();
350  for (unsigned ic = 0; ic < cellus.size(); ic++) {
351  HGCSiliconDetId cell_det_id(cell_det, zside, type, layer, waferu, waferv, cellus[ic], cellvs[ic]);
352  cell_det_ids.emplace(cell_det_id);
353  }
354  }
355  }
356  return cell_det_ids;
357 }
int zside(DetId const &)
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
bool validCellId(unsigned det, unsigned cell_id) const
Definition: DetId.h:17
Detector
Definition: DetId.h:24
std::unordered_set< unsigned > geom_set

◆ getLinksInModule()

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

Implements HGCalTriggerGeometryBase.

Definition at line 540 of file HGCalTriggerGeometryV9Imp3.cc.

References HFNoseTrigger, HGCalTriggerModuleDetId::layer(), electronStore::links, links_per_module_, HGCalTriggerModuleDetId::moduleU(), HGCalTriggerModuleDetId::moduleV(), packLayerSubdetWaferId(), and HGCalTriggerModuleDetId::triggerSubdetId().

540  {
541  HGCalTriggerModuleDetId module_det_id(module_id);
542  unsigned subdet = module_det_id.triggerSubdetId();
543 
544  unsigned links = 0;
545  // HF Nose
547  links = 1;
548  }
549  // TO ADD HFNOSE : getLinksInModule
550  // Silicon and Scintillator
551  else {
552  int packed_module =
553  packLayerSubdetWaferId(module_det_id.layer(), subdet, module_det_id.moduleU(), module_det_id.moduleV());
554  links = links_per_module_.at(packed_module);
555  }
556  return links;
557 }
std::unordered_map< unsigned, unsigned > links_per_module_
unsigned packLayerSubdetWaferId(unsigned layer, int subdet, int waferU, int waferV) const

◆ getLpgbtsFromModule()

HGCalTriggerGeometryV9Imp3::geom_set HGCalTriggerGeometryV9Imp3::getLpgbtsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 713 of file HGCalTriggerGeometryV9Imp3.cc.

References l1ctLayer2EG_cff::id, pixelTopology::layer, module_to_lpgbts_, packLayerSubdetWaferId(), hgcalTBTopologyTester_cfi::sector, and ecaldqm::zside().

713  {
714  geom_set lpgbt_ids;
715  HGCalTriggerModuleDetId id(module_id);
716 
717  auto module_itrs = module_to_lpgbts_.equal_range(
718  packLayerSubdetWaferId(id.layer(), id.triggerSubdetId(), id.moduleU(), id.moduleV()));
719  for (auto module_itr = module_itrs.first; module_itr != module_itrs.second; module_itr++) {
720  lpgbt_ids.emplace(HGCalTriggerBackendDetId(
721  id.zside(), HGCalTriggerBackendDetId::BackendType::LpGBT, id.sector(), module_itr->second));
722  }
723 
724  return lpgbt_ids;
725 }
int zside(DetId const &)
std::unordered_multimap< unsigned, unsigned > module_to_lpgbts_
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
std::unordered_set< unsigned > geom_set
unsigned packLayerSubdetWaferId(unsigned layer, int subdet, int waferU, int waferV) const

◆ getLpgbtsFromStage1Fpga()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp3::getLpgbtsFromStage1Fpga ( const unsigned  stage1_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 657 of file HGCalTriggerGeometryV9Imp3.cc.

References l1ctLayer2EG_cff::id, label, hgcalTBTopologyTester_cfi::sector, stage1_to_lpgbts_, and ecaldqm::zside().

657  {
658  geom_set lpgbt_ids;
659  HGCalTriggerBackendDetId id(stage1_id);
660 
661  auto stage1_itrs = stage1_to_lpgbts_.equal_range(id.label());
662  for (auto stage1_itr = stage1_itrs.first; stage1_itr != stage1_itrs.second; stage1_itr++) {
663  lpgbt_ids.emplace(HGCalTriggerBackendDetId(
664  id.zside(), HGCalTriggerBackendDetId::BackendType::LpGBT, id.sector(), stage1_itr->second));
665  }
666 
667  return lpgbt_ids;
668 }
int zside(DetId const &)
char const * label
std::unordered_multimap< unsigned, unsigned > stage1_to_lpgbts_
std::unordered_set< unsigned > geom_set

◆ getModuleFromCell()

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

Implements HGCalTriggerGeometryBase.

Definition at line 247 of file HGCalTriggerGeometryV9Imp3.cc.

References getModuleFromTriggerCell(), and getTriggerCellFromCell().

247  {
249 }
unsigned getTriggerCellFromCell(const unsigned) const final
unsigned getModuleFromTriggerCell(const unsigned) const final

◆ getModuleFromTriggerCell()

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

Implements HGCalTriggerGeometryBase.

Definition at line 251 of file HGCalTriggerGeometryV9Imp3.cc.

References DetId::det(), geom_rotation_120_, getScintillatoriEtaiPhi(), getWaferCentring(), HFNoseTrigger, DetId::HGCalHSc, HGCalHScTrigger, DetId::HGCalTrigger, LEDCalibrationChannels::ieta, HGCScintillatorDetId::ietaAbs(), HGCScintillatorDetId::iphi(), LEDCalibrationChannels::iphi, HGCScintillatorDetId::layer(), HFNoseTriggerDetId::layer(), HGCalTriggerDetId::layer(), pixelTopology::layer, hgcalTBTopologyTester_cfi::sector, HGCalTriggerDetId::subdet(), tcEtaphiMappingToSector0(), HGCScintillatorDetId::type(), HGCalTriggerDetId::type(), HFNoseTriggerDetId::type(), HGCalGeomRotation::uvMappingToSector0(), HFNoseTriggerDetId::waferU(), HGCalTriggerDetId::waferU(), HFNoseTriggerDetId::waferV(), HGCalTriggerDetId::waferV(), HGCScintillatorDetId::zside(), HGCalTriggerDetId::zside(), HFNoseTriggerDetId::zside(), and ecaldqm::zside().

Referenced by getModuleFromCell().

251  {
252  unsigned det = DetId(trigger_cell_id).det();
253  int zside = 0;
254  unsigned tc_type = 1;
255  unsigned layer = 0;
256  unsigned module_id = 0;
257 
258  // Scintillator
259  if (det == DetId::HGCalHSc) {
260  HGCScintillatorDetId trigger_cell_sc_id(trigger_cell_id);
261  tc_type = trigger_cell_sc_id.type();
262  layer = trigger_cell_sc_id.layer();
263  zside = trigger_cell_sc_id.zside();
264  int tc_eta = trigger_cell_sc_id.ietaAbs();
265  int tc_phi = trigger_cell_sc_id.iphi();
266  unsigned sector = tcEtaphiMappingToSector0(tc_eta, tc_phi);
267  int ieta = 0;
268  int iphi = 0;
269  getScintillatoriEtaiPhi(ieta, iphi, tc_eta, tc_phi, layer);
270  module_id =
272  }
273  // HFNose
274  else if (det == DetId::HGCalTrigger and
275  HGCalTriggerDetId(trigger_cell_id).subdet() == HGCalTriggerSubdetector::HFNoseTrigger) {
276  HFNoseTriggerDetId trigger_cell_trig_id(trigger_cell_id);
277  tc_type = trigger_cell_trig_id.type();
278  layer = trigger_cell_trig_id.layer();
279  zside = trigger_cell_trig_id.zside();
280  int waferu = trigger_cell_trig_id.waferU();
281  int waferv = trigger_cell_trig_id.waferV();
284  module_id =
286  }
287  // Silicon
288  else {
289  HGCalTriggerDetId trigger_cell_trig_id(trigger_cell_id);
290  unsigned subdet = trigger_cell_trig_id.subdet();
291  tc_type = trigger_cell_trig_id.type();
292  layer = trigger_cell_trig_id.layer();
293  zside = trigger_cell_trig_id.zside();
294  int waferu = trigger_cell_trig_id.waferU();
295  int waferv = trigger_cell_trig_id.waferV();
296  unsigned sector = geom_rotation_120_.uvMappingToSector0(getWaferCentring(layer, subdet), waferu, waferv);
297  module_id = HGCalTriggerModuleDetId(HGCalTriggerSubdetector(subdet), zside, tc_type, layer, sector, waferu, waferv);
298  }
299  return module_id;
300 }
HGCalTriggerSubdetector
HGCalGeomRotation::WaferCentring getWaferCentring(unsigned layer, int subdet) const
unsigned tcEtaphiMappingToSector0(int &tc_ieta, int &tc_iphi) const
int zside(DetId const &)
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
void getScintillatoriEtaiPhi(int &ieta, int &iphi, int tc_eta, int tc_phi, unsigned layer) const
Definition: DetId.h:17
unsigned uvMappingToSector0(WaferCentring waferCentring, int &moduleU, int &moduleV) const

◆ getModulePosition()

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

Implements HGCalTriggerGeometryBase.

Definition at line 769 of file HGCalTriggerGeometryV9Imp3.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), DetId::det(), HGCalTriggerGeometryBase::eeGeometry(), getCellsFromModule(), HGCalGeometry::getPosition(), HFNoseTrigger, DetId::HGCalEE, HGCalHScTrigger, HGCalTriggerGeometryBase::hscGeometry(), HGCalTriggerGeometryBase::hsiGeometry(), HGCalTriggerGeometryBase::noseGeometry(), and HGCalTriggerModuleDetId::triggerSubdetId().

769  {
770  unsigned subdet = HGCalTriggerModuleDetId(module_det_id).triggerSubdetId();
771  // Position: barycenter of the module.
772  Basic3DVector<float> moduleVector(0., 0., 0.);
773  const auto cell_ids = getCellsFromModule(module_det_id);
774  // Scintillator
776  for (const auto& cell : cell_ids) {
777  moduleVector += hscGeometry()->getPosition(cell).basicVector();
778  }
779  }
780  // HFNose
781  else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) {
782  for (const auto& cell : cell_ids) {
783  HFNoseDetId cellDetId(cell);
784  moduleVector += noseGeometry()->getPosition(cellDetId).basicVector();
785  }
786  } // Silicon
787  else {
788  for (const auto& cell : cell_ids) {
789  HGCSiliconDetId cellDetId(cell);
790  moduleVector += (cellDetId.det() == DetId::HGCalEE ? eeGeometry()->getPosition(cellDetId)
791  : hsiGeometry()->getPosition(cellDetId))
792  .basicVector();
793  }
794  }
795 
796  return GlobalPoint(moduleVector / cell_ids.size());
797 }
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
const HGCalGeometry * hscGeometry() const
GlobalPoint getPosition(const DetId &id, bool debug=false) const
geom_set getCellsFromModule(const unsigned) const final
const HGCalGeometry * noseGeometry() const
int triggerSubdetId() const
get the trigger sub-detector
const HGCalGeometry * hsiGeometry() const
const HGCalGeometry * eeGeometry() const

◆ getModulesFromLpgbt()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp3::getModulesFromLpgbt ( const unsigned  lpgbt_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 678 of file HGCalTriggerGeometryV9Imp3.cc.

References detIdWaferType(), DetId::HGCalEE, HGCalEETrigger, DetId::HGCalHSc, HGCalHScTrigger, DetId::HGCalHSi, HGCalHSiTrigger, l1ctLayer2EG_cff::id, label, pixelTopology::layer, lpgbt_to_modules_, LogMessageMonitor_cff::modules, hgcalTBTopologyTester_cfi::sector, unpackLayerSubdetWaferId(), and ecaldqm::zside().

678  {
680  HGCalTriggerBackendDetId id(lpgbt_id);
681 
682  auto lpgbt_itrs = lpgbt_to_modules_.equal_range(id.label());
683  for (auto lpgbt_itr = lpgbt_itrs.first; lpgbt_itr != lpgbt_itrs.second; lpgbt_itr++) {
684  unsigned layer = 0;
685  int moduleU = 0;
686  int moduleV = 0;
687  int subdet = 0;
688  unpackLayerSubdetWaferId(lpgbt_itr->second, layer, subdet, moduleU, moduleV);
689  unsigned det = 0;
690  switch (subdet) {
692  det = DetId::HGCalEE;
693  break;
695  det = DetId::HGCalHSi;
696  break;
698  det = DetId::HGCalHSc;
699  break;
700  default:
701  det = DetId::HGCalEE;
702  break;
703  }
704 
705  int type = detIdWaferType(det, layer, moduleU, moduleV);
707  HGCalTriggerSubdetector(subdet), id.zside(), type, layer, id.sector(), moduleU, moduleV));
708  }
709 
710  return modules;
711 }
HGCalTriggerSubdetector
std::unordered_multimap< unsigned, unsigned > lpgbt_to_modules_
int zside(DetId const &)
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
char const * label
std::unordered_set< unsigned > geom_set
void unpackLayerSubdetWaferId(unsigned wafer, unsigned &layer, int &subdet, int &waferU, int &waferV) const

◆ getModuleSize()

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

Implements HGCalTriggerGeometryBase.

Definition at line 559 of file HGCalTriggerGeometryV9Imp3.cc.

559  {
560  unsigned nWafers = 1;
561  return nWafers;
562 }

◆ getNeighborsFromTriggerCell()

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

Implements HGCalTriggerGeometryBase.

Definition at line 535 of file HGCalTriggerGeometryV9Imp3.cc.

References Exception.

536  {
537  throw cms::Exception("FeatureNotImplemented") << "Neighbor search is not implemented in HGCalTriggerGeometryV9Imp3";
538 }

◆ getNextSector()

unsigned HGCalTriggerGeometryV9Imp3::getNextSector ( const unsigned  sector) const
private

Definition at line 564 of file HGCalTriggerGeometryV9Imp3.cc.

References hgcalTBTopologyTester_cfi::sector.

Referenced by getStage1LinksFromStage2Fpga().

564  {
565  unsigned next_sector = 0;
566  if (sector < 2) {
567  next_sector = sector + 1;
568  }
569  return next_sector;
570 }

◆ getOrderedCellsFromModule()

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

Implements HGCalTriggerGeometryBase.

Definition at line 370 of file HGCalTriggerGeometryV9Imp3.cc.

References hgcalTBTopologyTester_cfi::cells, getCellsFromTriggerCell(), and getOrderedTriggerCellsFromModule().

371  {
372  geom_ordered_set cell_det_ids;
373  geom_ordered_set trigger_cells = getOrderedTriggerCellsFromModule(module_id);
374  for (auto trigger_cell_id : trigger_cells) {
375  geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
376  cell_det_ids.insert(cells.begin(), cells.end());
377  }
378  return cell_det_ids;
379 }
geom_ordered_set getOrderedTriggerCellsFromModule(const unsigned) const final
std::set< unsigned > geom_ordered_set
std::unordered_set< unsigned > geom_set
geom_set getCellsFromTriggerCell(const unsigned) const final

◆ getOrderedTriggerCellsFromModule()

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

Implements HGCalTriggerGeometryBase.

Definition at line 457 of file HGCalTriggerGeometryV9Imp3.cc.

References detIdWaferType(), HGCalTriggerModuleDetId::eta(), etaphiMappingFromSector0(), geom_rotation_120_, HFNoseDetIdToModule::getTriggerDetIds(), HGCSiliconDetIdToROC::getTriggerId(), getWaferCentring(), HFNoseTrigger, DetId::HGCalEE, HGCalEETrigger, HGCSiliconDetId::HGCalFine, HGCalHScTrigger, DetId::HGCalHSi, hSc_back_layers_split_, hSc_front_layers_split_, hSc_layer_for_split_, hSc_num_panels_per_sector_, hSc_tc_layer0_min_, hSc_tcs_per_module_phi_, heavyIonCSV_trainingSettings::idx, LEDCalibrationChannels::ieta, createfilelist::int, LEDCalibrationChannels::iphi, HGCalTriggerModuleDetId::layer(), pixelTopology::layer, HGCalTriggerModuleDetId::moduleU(), HGCalTriggerModuleDetId::moduleV(), nSectors_, HGCalTriggerModuleDetId::phi(), PixelMapPlotter::roc, HGCalTriggerModuleDetId::sector(), submitPVValidationJobs::split(), HGCalTriggerModuleDetId::triggerSubdetId(), HGCalTriggerModuleDetId::type(), HGCalGeomRotation::uvMappingFromSector0(), validTriggerCellFromCells(), and HGCalTriggerModuleDetId::zside().

Referenced by getOrderedCellsFromModule().

458  {
459  HGCalTriggerModuleDetId hgc_module_id(module_id);
460  unsigned subdet = hgc_module_id.triggerSubdetId();
461 
462  geom_ordered_set trigger_cell_det_ids;
463 
464  // Scintillator
466  int ieta0 = hgc_module_id.eta();
467  int iphi0 = hgc_module_id.phi();
468 
469  unsigned layer = hgc_module_id.layer();
470  etaphiMappingFromSector0(ieta0, iphi0, hgc_module_id.sector());
472  if (ieta0 == 1) {
473  ieta0 = ieta0 + split;
474  } else {
475  ieta0 = ieta0 + 1;
476  }
477  iphi0 = (iphi0 * hSc_tcs_per_module_phi_) + hSc_tc_layer0_min_ + 1;
479  if (iphi0 > total_tcs) {
480  iphi0 = iphi0 - total_tcs;
481  }
482 
483  int hSc_tcs_per_module_eta = (layer > hSc_layer_for_split_) ? hSc_back_layers_split_ : hSc_front_layers_split_;
484 
485  for (int ietaAbs = ieta0; ietaAbs < ieta0 + (int)hSc_tcs_per_module_eta; ietaAbs++) {
486  int ieta = ietaAbs * hgc_module_id.zside();
487  for (int iphi = iphi0; iphi < iphi0 + (int)hSc_tcs_per_module_phi_; iphi++) {
488  unsigned trigger_cell_id = HGCScintillatorDetId(hgc_module_id.type(), hgc_module_id.layer(), ieta, iphi);
489  if (validTriggerCellFromCells(trigger_cell_id))
490  trigger_cell_det_ids.emplace(trigger_cell_id);
491  }
492  }
493  }
494 
495  // HFNose
496  else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) {
497  HFNoseDetId module_nose_id(module_id);
499  std::vector<HFNoseTriggerDetId> ids = hfn.getTriggerDetIds(module_nose_id);
500  for (auto const& idx : ids) {
501  if (validTriggerCellFromCells(idx.rawId()))
502  trigger_cell_det_ids.emplace(idx);
503  }
504  }
505  // Silicon
506  else {
507  HGCSiliconDetIdToROC tc2roc;
508  int moduleU = hgc_module_id.moduleU();
509  int moduleV = hgc_module_id.moduleV();
510  unsigned layer = hgc_module_id.layer();
511 
512  //Rotate to sector
513  geom_rotation_120_.uvMappingFromSector0(getWaferCentring(layer, subdet), moduleU, moduleV, hgc_module_id.sector());
514 
516 
517  unsigned wafer_type = detIdWaferType(det, layer, moduleU, moduleV);
518  int nroc = (wafer_type == HGCSiliconDetId::HGCalFine ? 6 : 3);
519  // Loop on ROCs in wafer
520  for (int roc = 1; roc <= nroc; roc++) {
521  // loop on TCs in ROC
522  auto tc_uvs = tc2roc.getTriggerId(roc, wafer_type);
523  for (const auto& tc_uv : tc_uvs) {
524  HGCalTriggerDetId trigger_cell_id(
525  subdet, hgc_module_id.zside(), wafer_type, layer, moduleU, moduleV, tc_uv.first, tc_uv.second);
526  if (validTriggerCellFromCells(trigger_cell_id.rawId()))
527  trigger_cell_det_ids.emplace(trigger_cell_id);
528  }
529  }
530  }
531 
532  return trigger_cell_det_ids;
533 }
static constexpr unsigned hSc_tcs_per_module_phi_
HGCalGeomRotation::WaferCentring getWaferCentring(unsigned layer, int subdet) const
void uvMappingFromSector0(WaferCentring waferCentring, int &moduleU, int &moduleV, unsigned sector) const
bool validTriggerCellFromCells(const unsigned) const
static constexpr unsigned hSc_back_layers_split_
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
std::vector< HFNoseTriggerDetId > getTriggerDetIds(HFNoseDetId const &id) const
Detector
Definition: DetId.h:24
std::set< unsigned > geom_ordered_set
static constexpr unsigned hSc_front_layers_split_
std::vector< std::pair< int, int > > getTriggerId(int roc, int type) const
static constexpr unsigned hSc_num_panels_per_sector_
static constexpr unsigned hSc_layer_for_split_
void etaphiMappingFromSector0(int &ieta, int &iphi, unsigned sector) const

◆ getPreviousSector()

unsigned HGCalTriggerGeometryV9Imp3::getPreviousSector ( const unsigned  sector) const
private

Definition at line 572 of file HGCalTriggerGeometryV9Imp3.cc.

References hgcalTBTopologyTester_cfi::sector.

Referenced by getStage2FpgaFromStage1Link().

572  {
573  unsigned previous_sector = 2;
574  if (sector > 0) {
575  previous_sector = sector - 1;
576  }
577  return previous_sector;
578 }

◆ getScintillatoriEtaiPhi()

void HGCalTriggerGeometryV9Imp3::getScintillatoriEtaiPhi ( int &  ieta,
int &  iphi,
int  tc_eta,
int  tc_phi,
unsigned  layer 
) const
private

Definition at line 985 of file HGCalTriggerGeometryV9Imp3.cc.

References hSc_back_layers_split_, hSc_front_layers_split_, hSc_layer_for_split_, hSc_tcs_per_module_phi_, LEDCalibrationChannels::ieta, LEDCalibrationChannels::iphi, pixelTopology::layer, and submitPVValidationJobs::split().

Referenced by getModuleFromTriggerCell().

986  {
987  iphi = (tc_phi - 1) / hSc_tcs_per_module_phi_; //Phi index 1-12
988 
990  if (layer > hSc_layer_for_split_) {
992  }
993  if (tc_eta <= split) {
994  ieta = 0;
995  } else {
996  ieta = 1;
997  }
998 }
static constexpr unsigned hSc_tcs_per_module_phi_
static constexpr unsigned hSc_back_layers_split_
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
static constexpr unsigned hSc_front_layers_split_
static constexpr unsigned hSc_layer_for_split_

◆ getStage1FpgaFromLpgbt()

unsigned HGCalTriggerGeometryV9Imp3::getStage1FpgaFromLpgbt ( const unsigned  lpgbt_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 670 of file HGCalTriggerGeometryV9Imp3.cc.

References l1ctLayer2EG_cff::id, label, lpgbt_to_stage1_, hgcalTBTopologyTester_cfi::sector, and ecaldqm::zside().

670  {
671  HGCalTriggerBackendDetId id(lpgbt_id);
672  unsigned stage1_label = lpgbt_to_stage1_.at(id.label());
673 
675  id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1FPGA, id.sector(), stage1_label);
676 }
std::unordered_map< unsigned, unsigned > lpgbt_to_stage1_
int zside(DetId const &)
char const * label

◆ getStage1FpgaFromModule()

unsigned HGCalTriggerGeometryV9Imp3::getStage1FpgaFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 727 of file HGCalTriggerGeometryV9Imp3.cc.

References l1ctLayer2EG_cff::id, pixelTopology::layer, module_to_stage1_, packLayerSubdetWaferId(), hgcalTBTopologyTester_cfi::sector, and ecaldqm::zside().

727  {
728  HGCalTriggerModuleDetId id(module_id);
729 
730  unsigned stage1_label =
731  module_to_stage1_.at(packLayerSubdetWaferId(id.layer(), id.triggerSubdetId(), id.moduleU(), id.moduleV()));
732 
734  id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1FPGA, id.sector(), stage1_label);
735 }
int zside(DetId const &)
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
std::unordered_map< unsigned, unsigned > module_to_stage1_
unsigned packLayerSubdetWaferId(unsigned layer, int subdet, int waferU, int waferV) const

◆ getStage1FpgaFromStage1Link()

unsigned HGCalTriggerGeometryV9Imp3::getStage1FpgaFromStage1Link ( const unsigned  link_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 623 of file HGCalTriggerGeometryV9Imp3.cc.

References l1ctLayer2EG_cff::id, label, hgcalTBTopologyTester_cfi::sector, stage1link_to_stage1_, and ecaldqm::zside().

Referenced by getStage1FpgasFromStage2Fpga().

623  {
624  HGCalTriggerBackendDetId id(link_id);
625  unsigned stage1_label = stage1link_to_stage1_.at(id.label());
626 
628  id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1FPGA, id.sector(), stage1_label);
629 }
std::unordered_map< unsigned, unsigned > stage1link_to_stage1_
int zside(DetId const &)
char const * label

◆ getStage1FpgasFromStage2Fpga()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp3::getStage1FpgasFromStage2Fpga ( const unsigned  stage2_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 580 of file HGCalTriggerGeometryV9Imp3.cc.

References getStage1FpgaFromStage1Link(), and getStage1LinksFromStage2Fpga().

581  {
582  geom_set stage1_ids;
583 
584  geom_set stage1_links = getStage1LinksFromStage2Fpga(stage2_id);
585  for (const auto& stage1_link : stage1_links) {
586  stage1_ids.emplace(getStage1FpgaFromStage1Link(stage1_link));
587  }
588 
589  return stage1_ids;
590 }
std::unordered_set< unsigned > geom_set
geom_set getStage1LinksFromStage2Fpga(const unsigned) const final
unsigned getStage1FpgaFromStage1Link(const unsigned) const final

◆ getStage1LinksFromStage1Fpga()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp3::getStage1LinksFromStage1Fpga ( const unsigned  stage1_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 643 of file HGCalTriggerGeometryV9Imp3.cc.

References l1ctLayer2EG_cff::id, label, hgcalTBTopologyTester_cfi::sector, stage1_to_stage1links_, and ecaldqm::zside().

Referenced by getStage2FpgasFromStage1Fpga().

644  {
645  geom_set stage1link_ids;
646  HGCalTriggerBackendDetId id(stage1_id);
647 
648  auto stage1_itrs = stage1_to_stage1links_.equal_range(id.label());
649  for (auto stage1_itr = stage1_itrs.first; stage1_itr != stage1_itrs.second; stage1_itr++) {
650  stage1link_ids.emplace(HGCalTriggerBackendDetId(
651  id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1Link, id.sector(), stage1_itr->second));
652  }
653 
654  return stage1link_ids;
655 }
std::unordered_multimap< unsigned, unsigned > stage1_to_stage1links_
int zside(DetId const &)
char const * label
std::unordered_set< unsigned > geom_set

◆ getStage1LinksFromStage2Fpga()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp3::getStage1LinksFromStage2Fpga ( const unsigned  stage2_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 604 of file HGCalTriggerGeometryV9Imp3.cc.

References getNextSector(), l1ctLayer2EG_cff::id, label, hgcalTBTopologyTester_cfi::sector, stage1links_samesector_, stage2_to_stage1links_, and ecaldqm::zside().

Referenced by getStage1FpgasFromStage2Fpga().

605  {
606  geom_set stage1link_ids;
607  HGCalTriggerBackendDetId id(stage2_id);
608  auto stage2_itrs = stage2_to_stage1links_.equal_range(id.label());
609  for (auto stage2_itr = stage2_itrs.first; stage2_itr != stage2_itrs.second; stage2_itr++) {
610  unsigned label = stage2_itr->second;
611  if (stage1links_samesector_.at(label) == true) { //link and stage2 FPGA are the same sector
612  stage1link_ids.emplace(
613  HGCalTriggerBackendDetId(id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1Link, id.sector(), label));
614  } else { //link is from the next sector (anti-clockwise)
615  stage1link_ids.emplace(HGCalTriggerBackendDetId(
616  id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1Link, getNextSector(id.sector()), label));
617  }
618  }
619 
620  return stage1link_ids;
621 }
std::unordered_multimap< unsigned, unsigned > stage2_to_stage1links_
int zside(DetId const &)
std::unordered_map< unsigned, bool > stage1links_samesector_
unsigned getNextSector(const unsigned sector) const
char const * label
std::unordered_set< unsigned > geom_set

◆ getStage2FpgaFromStage1Link()

unsigned HGCalTriggerGeometryV9Imp3::getStage2FpgaFromStage1Link ( const unsigned  link_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 631 of file HGCalTriggerGeometryV9Imp3.cc.

References getPreviousSector(), l1ctLayer2EG_cff::id, label, hgcalTBTopologyTester_cfi::sector, stage1link_to_stage2_, and ecaldqm::zside().

Referenced by getStage2FpgasFromStage1Fpga().

631  {
632  HGCalTriggerBackendDetId id(link_id);
633  bool same_sector = stage1link_to_stage2_.at(id.label());
634  unsigned sector = id.sector();
635 
636  if (!same_sector) {
638  }
639 
640  return HGCalTriggerBackendDetId(id.zside(), HGCalTriggerBackendDetId::BackendType::Stage2FPGA, sector, 0);
641 }
int zside(DetId const &)
char const * label
unsigned getPreviousSector(const unsigned sector) const
std::unordered_map< unsigned, unsigned > stage1link_to_stage2_

◆ getStage2FpgasFromStage1Fpga()

HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp3::getStage2FpgasFromStage1Fpga ( const unsigned  stage1_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 592 of file HGCalTriggerGeometryV9Imp3.cc.

References getStage1LinksFromStage1Fpga(), and getStage2FpgaFromStage1Link().

593  {
594  geom_set stage2_ids;
595 
596  geom_set stage1_links = getStage1LinksFromStage1Fpga(stage1_id);
597  for (const auto& stage1_link : stage1_links) {
598  stage2_ids.emplace(getStage2FpgaFromStage1Link(stage1_link));
599  }
600 
601  return stage2_ids;
602 }
unsigned getStage2FpgaFromStage1Link(const unsigned) const final
std::unordered_set< unsigned > geom_set
geom_set getStage1LinksFromStage1Fpga(const unsigned) const final

◆ getTriggerCellFromCell()

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

Implements HGCalTriggerGeometryBase.

Definition at line 208 of file HGCalTriggerGeometryV9Imp3.cc.

References DetId::det(), DetId::Forward, HFNose, HFNoseTrigger, DetId::HGCalEE, HGCalEETrigger, DetId::HGCalHSc, DetId::HGCalHSi, HGCalHSiTrigger, hSc_triggercell_size_, LEDCalibrationChannels::ieta, HGCScintillatorDetId::ietaAbs(), HGCScintillatorDetId::iphi(), LEDCalibrationChannels::iphi, HGCScintillatorDetId::layer(), HFNoseDetId::layer(), HGCSiliconDetId::layer(), DetId::subdetId(), HGCSiliconDetId::triggerCellU(), HFNoseDetId::triggerCellU(), HGCSiliconDetId::triggerCellV(), HFNoseDetId::triggerCellV(), HGCScintillatorDetId::type(), HGCSiliconDetId::type(), HFNoseDetId::type(), HGCSiliconDetId::waferU(), HFNoseDetId::waferU(), HGCSiliconDetId::waferV(), HFNoseDetId::waferV(), HGCScintillatorDetId::zside(), HGCSiliconDetId::zside(), and HFNoseDetId::zside().

Referenced by getModuleFromCell().

208  {
209  unsigned det = DetId(cell_id).det();
210  unsigned trigger_cell_id = 0;
211  // Scintillator
212  if (det == DetId::HGCalHSc) {
213  // Very rough mapping from cells to TC
214  HGCScintillatorDetId cell_sc_id(cell_id);
215  int ieta = ((cell_sc_id.ietaAbs() - 1) / hSc_triggercell_size_ + 1) * cell_sc_id.zside();
216  int iphi = (cell_sc_id.iphi() - 1) / hSc_triggercell_size_ + 1;
217  trigger_cell_id = HGCScintillatorDetId(cell_sc_id.type(), cell_sc_id.layer(), ieta, iphi);
218  }
219  // HFNose
220  else if (det == DetId::Forward && DetId(cell_id).subdetId() == ForwardSubdetector::HFNose) {
221  HFNoseDetId cell_nose_id(cell_id);
223  cell_nose_id.zside(),
224  cell_nose_id.type(),
225  cell_nose_id.layer(),
226  cell_nose_id.waferU(),
227  cell_nose_id.waferV(),
228  cell_nose_id.triggerCellU(),
229  cell_nose_id.triggerCellV());
230  }
231  // Silicon
232  else if (det == DetId::HGCalEE || det == DetId::HGCalHSi) {
233  HGCSiliconDetId cell_si_id(cell_id);
234  trigger_cell_id = HGCalTriggerDetId(
236  cell_si_id.zside(),
237  cell_si_id.type(),
238  cell_si_id.layer(),
239  cell_si_id.waferU(),
240  cell_si_id.waferV(),
241  cell_si_id.triggerCellU(),
242  cell_si_id.triggerCellV());
243  }
244  return trigger_cell_id;
245 }
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:48
Definition: DetId.h:17

◆ getTriggerCellPosition()

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

Implements HGCalTriggerGeometryBase.

Definition at line 737 of file HGCalTriggerGeometryV9Imp3.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), DetId::det(), HGCalTriggerGeometryBase::eeGeometry(), getCellsFromTriggerCell(), HGCalGeometry::getPosition(), HFNoseTrigger, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalTrigger, HGCalTriggerGeometryBase::hscGeometry(), HGCalTriggerGeometryBase::hsiGeometry(), and HGCalTriggerGeometryBase::noseGeometry().

737  {
738  unsigned det = DetId(trigger_cell_det_id).det();
739 
740  // Position: barycenter of the trigger cell.
741  Basic3DVector<float> triggerCellVector(0., 0., 0.);
742  const auto cell_ids = getCellsFromTriggerCell(trigger_cell_det_id);
743  // Scintillator
744  if (det == DetId::HGCalHSc) {
745  for (const auto& cell : cell_ids) {
746  triggerCellVector += hscGeometry()->getPosition(cell).basicVector();
747  }
748  }
749  // HFNose
750  else if (det == DetId::HGCalTrigger and
751  HGCalTriggerDetId(trigger_cell_det_id).subdet() == HGCalTriggerSubdetector::HFNoseTrigger) {
752  for (const auto& cell : cell_ids) {
753  HFNoseDetId cellDetId(cell);
754  triggerCellVector += noseGeometry()->getPosition(cellDetId).basicVector();
755  }
756  }
757  // Silicon
758  else {
759  for (const auto& cell : cell_ids) {
760  HGCSiliconDetId cellDetId(cell);
761  triggerCellVector += (cellDetId.det() == DetId::HGCalEE ? eeGeometry()->getPosition(cellDetId)
762  : hsiGeometry()->getPosition(cellDetId))
763  .basicVector();
764  }
765  }
766  return GlobalPoint(triggerCellVector / cell_ids.size());
767 }
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
Definition: DetId.h:17
const HGCalGeometry * hscGeometry() const
GlobalPoint getPosition(const DetId &id, bool debug=false) const
const HGCalGeometry * noseGeometry() const
geom_set getCellsFromTriggerCell(const unsigned) const final
const HGCalGeometry * hsiGeometry() const
const HGCalGeometry * eeGeometry() const

◆ getTriggerCellsFromModule()

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

Implements HGCalTriggerGeometryBase.

Definition at line 381 of file HGCalTriggerGeometryV9Imp3.cc.

References detIdWaferType(), HGCalTriggerModuleDetId::eta(), etaphiMappingFromSector0(), geom_rotation_120_, HFNoseDetIdToModule::getTriggerDetIds(), HGCSiliconDetIdToROC::getTriggerId(), getWaferCentring(), HFNoseTrigger, DetId::HGCalEE, HGCalEETrigger, HGCSiliconDetId::HGCalFine, HGCalHScTrigger, DetId::HGCalHSi, hSc_back_layers_split_, hSc_front_layers_split_, hSc_layer_for_split_, hSc_num_panels_per_sector_, hSc_tc_layer0_min_, hSc_tcs_per_module_phi_, heavyIonCSV_trainingSettings::idx, LEDCalibrationChannels::ieta, createfilelist::int, LEDCalibrationChannels::iphi, HGCalTriggerModuleDetId::layer(), pixelTopology::layer, HGCalTriggerModuleDetId::moduleU(), HGCalTriggerModuleDetId::moduleV(), nSectors_, HGCalTriggerModuleDetId::phi(), PixelMapPlotter::roc, HGCalTriggerModuleDetId::sector(), submitPVValidationJobs::split(), HGCalTriggerModuleDetId::triggerSubdetId(), HGCalTriggerModuleDetId::type(), HGCalGeomRotation::uvMappingFromSector0(), validTriggerCellFromCells(), and HGCalTriggerModuleDetId::zside().

Referenced by getCellsFromModule().

382  {
383  HGCalTriggerModuleDetId hgc_module_id(module_id);
384  unsigned subdet = hgc_module_id.triggerSubdetId();
385 
386  geom_set trigger_cell_det_ids;
387  // Scintillator
389  int ieta0 = hgc_module_id.eta();
390  int iphi0 = hgc_module_id.phi();
391 
392  unsigned layer = hgc_module_id.layer();
393  etaphiMappingFromSector0(ieta0, iphi0, hgc_module_id.sector());
395  if (ieta0 == 1) {
396  ieta0 = ieta0 + split;
397  } else {
398  ieta0 = ieta0 + 1;
399  }
400  iphi0 = (iphi0 * hSc_tcs_per_module_phi_) + hSc_tc_layer0_min_ + 1;
402  if (iphi0 > total_tcs) {
403  iphi0 = iphi0 - total_tcs;
404  }
405 
406  int hSc_tcs_per_module_eta = (layer > hSc_layer_for_split_) ? hSc_back_layers_split_ : hSc_front_layers_split_;
407 
408  for (int ietaAbs = ieta0; ietaAbs < ieta0 + (int)hSc_tcs_per_module_eta; ietaAbs++) {
409  int ieta = ietaAbs * hgc_module_id.zside();
410  for (int iphi = iphi0; iphi < iphi0 + (int)hSc_tcs_per_module_phi_; iphi++) {
411  unsigned trigger_cell_id = HGCScintillatorDetId(hgc_module_id.type(), hgc_module_id.layer(), ieta, iphi);
412  if (validTriggerCellFromCells(trigger_cell_id))
413  trigger_cell_det_ids.emplace(trigger_cell_id);
414  }
415  }
416  }
417  // HFNose
418  else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) {
419  HFNoseDetId module_nose_id(module_id);
421  std::vector<HFNoseTriggerDetId> ids = hfn.getTriggerDetIds(module_nose_id);
422  for (auto const& idx : ids) {
423  if (validTriggerCellFromCells(idx.rawId()))
424  trigger_cell_det_ids.emplace(idx);
425  }
426  }
427  // Silicon
428  else {
429  HGCSiliconDetIdToROC tc2roc;
430  int moduleU = hgc_module_id.moduleU();
431  int moduleV = hgc_module_id.moduleV();
432  unsigned layer = hgc_module_id.layer();
433 
434  //Rotate to sector
435  geom_rotation_120_.uvMappingFromSector0(getWaferCentring(layer, subdet), moduleU, moduleV, hgc_module_id.sector());
436 
438 
439  unsigned wafer_type = detIdWaferType(det, layer, moduleU, moduleV);
440  int nroc = (wafer_type == HGCSiliconDetId::HGCalFine ? 6 : 3);
441  // Loop on ROCs in wafer
442  for (int roc = 1; roc <= nroc; roc++) {
443  // loop on TCs in ROC
444  auto tc_uvs = tc2roc.getTriggerId(roc, wafer_type);
445  for (const auto& tc_uv : tc_uvs) {
446  HGCalTriggerDetId trigger_cell_id(
447  subdet, hgc_module_id.zside(), wafer_type, layer, moduleU, moduleV, tc_uv.first, tc_uv.second);
448  if (validTriggerCellFromCells(trigger_cell_id.rawId()))
449  trigger_cell_det_ids.emplace(trigger_cell_id);
450  }
451  }
452  }
453 
454  return trigger_cell_det_ids;
455 }
static constexpr unsigned hSc_tcs_per_module_phi_
HGCalGeomRotation::WaferCentring getWaferCentring(unsigned layer, int subdet) const
void uvMappingFromSector0(WaferCentring waferCentring, int &moduleU, int &moduleV, unsigned sector) const
bool validTriggerCellFromCells(const unsigned) const
static constexpr unsigned hSc_back_layers_split_
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
std::vector< HFNoseTriggerDetId > getTriggerDetIds(HFNoseDetId const &id) const
Detector
Definition: DetId.h:24
std::unordered_set< unsigned > geom_set
static constexpr unsigned hSc_front_layers_split_
std::vector< std::pair< int, int > > getTriggerId(int roc, int type) const
static constexpr unsigned hSc_num_panels_per_sector_
static constexpr unsigned hSc_layer_for_split_
void etaphiMappingFromSector0(int &ieta, int &iphi, unsigned sector) const

◆ getWaferCentring()

HGCalGeomRotation::WaferCentring HGCalTriggerGeometryV9Imp3::getWaferCentring ( unsigned  layer,
int  subdet 
) const
private

Definition at line 942 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalGeomRotation::CornerCentredMercedes, HGCalGeomRotation::CornerCentredY, HFNoseTrigger, HGCalEETrigger, HGCalHSiTrigger, pixelTopology::layer, and HGCalGeomRotation::WaferCentred.

Referenced by getModuleFromTriggerCell(), getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

942  {
943  if (subdet == HGCalTriggerSubdetector::HGCalEETrigger) { // CE-E
945  } else if (subdet == HGCalTriggerSubdetector::HGCalHSiTrigger) {
946  if ((layer % 2) == 1) { // CE-H Odd
948  } else { // CE-H Even
950  }
951  } else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) { //HFNose
953  } else {
954  edm::LogError("HGCalTriggerGeometryV9Imp3")
955  << "HGCalTriggerGeometryV9Imp3: trigger sub-detector expected to be silicon";
957  }
958 }
Log< level::Error, false > LogError
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer

◆ initialize() [1/2]

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

Implements HGCalTriggerGeometryBase.

Definition at line 146 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalTopology::dddConstants(), disconnected_layers_, HGCalTriggerGeometryBase::eeTopology(), fillMaps(), heOffset_, HGCalTriggerGeometryBase::hsiTopology(), last_trigger_layer_, pixelTopology::layer, HGCalDDDConstants::layers(), HGCalTriggerGeometryBase::setEEGeometry(), HGCalTriggerGeometryBase::setHScGeometry(), HGCalTriggerGeometryBase::setHSiGeometry(), totalLayers_, and trigger_layers_.

148  {
149  setEEGeometry(hgc_ee_geometry);
150  setHSiGeometry(hgc_hsi_geometry);
151  setHScGeometry(hgc_hsc_geometry);
154  trigger_layers_.resize(totalLayers_ + 1);
155  trigger_layers_[0] = 0; // layer number 0 doesn't exist
156  unsigned trigger_layer = 1;
157  for (unsigned layer = 1; layer < trigger_layers_.size(); layer++) {
158  if (disconnected_layers_.find(layer) == disconnected_layers_.end()) {
159  // Increase trigger layer number if the layer is not disconnected
160  trigger_layers_[layer] = trigger_layer;
161  trigger_layer++;
162  } else {
163  trigger_layers_[layer] = 0;
164  }
165  }
166  last_trigger_layer_ = trigger_layer - 1;
167  fillMaps();
168 }
void setEEGeometry(const HGCalGeometry *geom)
const HGCalTopology & eeTopology() const
void setHSiGeometry(const HGCalGeometry *geom)
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
void setHScGeometry(const HGCalGeometry *geom)
std::vector< unsigned > trigger_layers_
unsigned int layers(bool reco) const
const HGCalTopology & hsiTopology() const
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:98
std::unordered_set< unsigned > disconnected_layers_

◆ initialize() [2/2]

void HGCalTriggerGeometryV9Imp3::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 170 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalTopology::dddConstants(), disconnected_layers_, HGCalTriggerGeometryBase::eeTopology(), fillMaps(), heOffset_, HGCalTriggerGeometryBase::hsiTopology(), last_trigger_layer_, pixelTopology::layer, HGCalDDDConstants::layers(), noseLayers_, HGCalTriggerGeometryBase::noseTopology(), HGCalTriggerGeometryBase::setEEGeometry(), HGCalTriggerGeometryBase::setHScGeometry(), HGCalTriggerGeometryBase::setHSiGeometry(), HGCalTriggerGeometryBase::setNoseGeometry(), totalLayers_, trigger_layers_, and trigger_nose_layers_.

173  {
174  setEEGeometry(hgc_ee_geometry);
175  setHSiGeometry(hgc_hsi_geometry);
176  setHScGeometry(hgc_hsc_geometry);
177  setNoseGeometry(hgc_nose_geometry);
178 
181 
182  trigger_layers_.resize(totalLayers_ + 1);
183  trigger_layers_[0] = 0; // layer number 0 doesn't exist
184  unsigned trigger_layer = 1;
185  for (unsigned layer = 1; layer < trigger_layers_.size(); layer++) {
186  if (disconnected_layers_.find(layer) == disconnected_layers_.end()) {
187  // Increase trigger layer number if the layer is not disconnected
188  trigger_layers_[layer] = trigger_layer;
189  trigger_layer++;
190  } else {
191  trigger_layers_[layer] = 0;
192  }
193  }
194  last_trigger_layer_ = trigger_layer - 1;
195  fillMaps();
196 
198 
199  trigger_nose_layers_.resize(noseLayers_ + 1);
200  trigger_nose_layers_[0] = 0; // layer number 0 doesn't exist
201  unsigned trigger_nose_layer = 1;
202  for (unsigned layer = 1; layer < trigger_nose_layers_.size(); layer++) {
203  trigger_nose_layers_[layer] = trigger_nose_layer;
204  trigger_nose_layer++;
205  }
206 }
void setEEGeometry(const HGCalGeometry *geom)
const HGCalTopology & eeTopology() const
void setHSiGeometry(const HGCalGeometry *geom)
void setNoseGeometry(const HGCalGeometry *geom)
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
void setHScGeometry(const HGCalGeometry *geom)
std::vector< unsigned > trigger_layers_
unsigned int layers(bool reco) const
const HGCalTopology & noseTopology() const
std::vector< unsigned > trigger_nose_layers_
const HGCalTopology & hsiTopology() const
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:98
std::unordered_set< unsigned > disconnected_layers_

◆ lastTriggerLayer()

unsigned HGCalTriggerGeometryV9Imp3::lastTriggerLayer ( ) const
inlinefinalvirtual

◆ layerWithOffset()

unsigned HGCalTriggerGeometryV9Imp3::layerWithOffset ( unsigned  id) const
private

Definition at line 1124 of file HGCalTriggerGeometryV9Imp3.cc.

References DetId::det(), DetId::Forward, heOffset_, HFNoseTrigger, HGCalEETrigger, DetId::HGCalHSc, HGCalHScTrigger, HGCalHSiTrigger, DetId::HGCalTrigger, HGCalDetId::layer(), HGCScintillatorDetId::layer(), HGCalTriggerDetId::layer(), HFNoseTriggerDetId::layer(), HGCalTriggerModuleDetId::layer(), pixelTopology::layer, HGCalTriggerDetId::subdet(), and HGCalTriggerModuleDetId::triggerSubdetId().

Referenced by disconnectedModule(), and triggerLayer().

1124  {
1125  unsigned det = DetId(id).det();
1126  unsigned layer = 0;
1127 
1128  if (det == DetId::HGCalTrigger) {
1129  unsigned subdet = HGCalTriggerDetId(id).subdet();
1131  layer = HGCalTriggerDetId(id).layer();
1132  } else if (subdet == HGCalTriggerSubdetector::HGCalHSiTrigger) {
1134  } else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) {
1135  layer = HFNoseTriggerDetId(id).layer();
1136  }
1137  } else if (det == DetId::HGCalHSc) {
1139  } else if (det == DetId::Forward) {
1140  unsigned subdet = HGCalTriggerModuleDetId(id).triggerSubdetId();
1143  } else if (subdet == HGCalTriggerSubdetector::HGCalHSiTrigger ||
1145  layer = heOffset_ + HGCalDetId(id).layer();
1146  } else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) {
1148  }
1149  }
1150  return layer;
1151 }
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
int layer() const
get the layer #
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
int layer() const
get the layer #
HGCalTriggerSubdetector subdet() const
get the subdetector
int layer() const
get the layer #
Definition: DetId.h:17
int layer() const
get the layer #
Definition: HGCalDetId.h:46
int triggerSubdetId() const
get the trigger sub-detector
int layer() const
get the layer #

◆ layerWithoutOffsetAndSubdetId()

void HGCalTriggerGeometryV9Imp3::layerWithoutOffsetAndSubdetId ( unsigned &  layer,
int &  subdetId,
bool  isSilicon 
) const
private

Definition at line 1110 of file HGCalTriggerGeometryV9Imp3.cc.

References heOffset_, HGCalEETrigger, HGCalHScTrigger, HGCalHSiTrigger, and pixelTopology::layer.

Referenced by fillMaps().

1110  {
1111  if (!isSilicon) {
1112  layer = layer - heOffset_;
1114  } else {
1115  if (layer > heOffset_) {
1117  layer = layer - heOffset_;
1118  } else {
1120  }
1121  }
1122 }
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer

◆ packLayerSubdetWaferId()

unsigned HGCalTriggerGeometryV9Imp3::packLayerSubdetWaferId ( unsigned  layer,
int  subdet,
int  waferU,
int  waferV 
) const
private

Definition at line 909 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalTriggerModuleDetId::kHGCalLayerMask, HGCalTriggerModuleDetId::kHGCalLayerOffset, HGCalTriggerModuleDetId::kHGCalModuleUMask, HGCalTriggerModuleDetId::kHGCalModuleUOffset, HGCalTriggerModuleDetId::kHGCalModuleVMask, HGCalTriggerModuleDetId::kHGCalModuleVOffset, HGCalTriggerModuleDetId::kHGCalTriggerSubdetMask, HGCalTriggerModuleDetId::kHGCalTriggerSubdetOffset, pixelTopology::layer, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

Referenced by disconnectedModule(), fillMaps(), getLinksInModule(), getLpgbtsFromModule(), and getStage1FpgaFromModule().

909  {
910  unsigned packed_value = 0;
911 
912  packed_value |=
914  packed_value |=
916  packed_value |= ((subdet & HGCalTriggerModuleDetId::kHGCalTriggerSubdetMask)
919  return packed_value;
920 }
static const int kHGCalTriggerSubdetMask
int32_t waferU(const int32_t index)
static const int kHGCalModuleVOffset
static const int kHGCalModuleUOffset
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
int32_t waferV(const int32_t index)
static const int kHGCalTriggerSubdetOffset

◆ reset()

void HGCalTriggerGeometryV9Imp3::reset ( void  )
finalvirtual

Reimplemented from HGCalTriggerGeometryBase.

Definition at line 133 of file HGCalTriggerGeometryV9Imp3.cc.

References lpgbt_to_modules_, lpgbt_to_stage1_, module_to_lpgbts_, module_to_stage1_, stage1_to_lpgbts_, stage1_to_stage1links_, stage1link_to_stage1_, stage1link_to_stage2_, stage1links_samesector_, and stage2_to_stage1links_.

133  {
134  stage2_to_stage1links_.clear();
135  stage1links_samesector_.clear();
136  stage1link_to_stage2_.clear();
137  stage1link_to_stage1_.clear();
138  stage1_to_stage1links_.clear();
139  stage1_to_lpgbts_.clear();
140  lpgbt_to_stage1_.clear();
141  lpgbt_to_modules_.clear();
142  module_to_lpgbts_.clear();
143  module_to_stage1_.clear();
144 }
std::unordered_map< unsigned, unsigned > stage1link_to_stage1_
std::unordered_multimap< unsigned, unsigned > stage1_to_stage1links_
std::unordered_multimap< unsigned, unsigned > lpgbt_to_modules_
std::unordered_map< unsigned, unsigned > lpgbt_to_stage1_
std::unordered_multimap< unsigned, unsigned > stage2_to_stage1links_
std::unordered_map< unsigned, bool > stage1links_samesector_
std::unordered_multimap< unsigned, unsigned > module_to_lpgbts_
std::unordered_multimap< unsigned, unsigned > stage1_to_lpgbts_
std::unordered_map< unsigned, unsigned > stage1link_to_stage2_
std::unordered_map< unsigned, unsigned > module_to_stage1_

◆ tcEtaphiMappingToSector0()

unsigned HGCalTriggerGeometryV9Imp3::tcEtaphiMappingToSector0 ( int &  tc_ieta,
int &  tc_iphi 
) const
private

Definition at line 960 of file HGCalTriggerGeometryV9Imp3.cc.

References hSc_tc_layer0_min_, nSectors_, ntc_per_wafer_, and hgcalTBTopologyTester_cfi::sector.

Referenced by getModuleFromTriggerCell().

960  {
961  unsigned sector = 0;
962 
963  if (tc_iphi > hSc_tc_layer0_min_ && tc_iphi <= hSc_tc_layer0_min_ + ntc_per_wafer_) {
964  sector = 0;
965  } else if (tc_iphi > hSc_tc_layer0_min_ + ntc_per_wafer_ && tc_iphi <= hSc_tc_layer0_min_ + 2 * ntc_per_wafer_) {
966  sector = 2;
967  } else {
968  sector = 1;
969  }
970 
971  if (sector == 0) {
972  tc_iphi = tc_iphi - hSc_tc_layer0_min_;
973  } else if (sector == 2) {
974  tc_iphi = tc_iphi - (hSc_tc_layer0_min_ + ntc_per_wafer_);
975  } else if (sector == 1) {
976  if (tc_iphi <= hSc_tc_layer0_min_) {
977  tc_iphi = tc_iphi + nSectors_ * ntc_per_wafer_;
978  }
979  tc_iphi = tc_iphi - (nSectors_ * ntc_per_wafer_ - hSc_tc_layer0_min_);
980  }
981 
982  return sector;
983 }

◆ triggerLayer()

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

Implements HGCalTriggerGeometryBase.

Definition at line 1017 of file HGCalTriggerGeometryV9Imp3.cc.

References HFNoseTrigger, DetId::HGCalTrigger, pixelTopology::layer, layerWithOffset(), trigger_layers_, and trigger_nose_layers_.

1017  {
1018  unsigned layer = layerWithOffset(id);
1019 
1020  if (DetId(id).det() == DetId::HGCalTrigger and
1022  if (layer >= trigger_nose_layers_.size())
1023  return 0;
1024  return trigger_nose_layers_[layer];
1025  }
1026  if (layer >= trigger_layers_.size())
1027  return 0;
1028  return trigger_layers_[layer];
1029 }
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
std::vector< unsigned > trigger_layers_
Definition: DetId.h:17
unsigned layerWithOffset(unsigned) const
std::vector< unsigned > trigger_nose_layers_

◆ unpackLayerSubdetWaferId()

void HGCalTriggerGeometryV9Imp3::unpackLayerSubdetWaferId ( unsigned  wafer,
unsigned &  layer,
int &  subdet,
int &  waferU,
int &  waferV 
) const
private

Definition at line 922 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalTriggerModuleDetId::kHGCalLayerMask, HGCalTriggerModuleDetId::kHGCalLayerOffset, HGCalTriggerModuleDetId::kHGCalModuleUMask, HGCalTriggerModuleDetId::kHGCalModuleUOffset, HGCalTriggerModuleDetId::kHGCalModuleVMask, HGCalTriggerModuleDetId::kHGCalModuleVOffset, HGCalTriggerModuleDetId::kHGCalTriggerSubdetMask, HGCalTriggerModuleDetId::kHGCalTriggerSubdetOffset, pixelTopology::layer, HGCalWaferIndex::waferU(), and HGCalWaferIndex::waferV().

Referenced by getModulesFromLpgbt().

923  {
926  subdet =
929 }
static const int kHGCalTriggerSubdetMask
int32_t waferU(const int32_t index)
static const int kHGCalModuleVOffset
static const int kHGCalModuleUOffset
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
int32_t waferV(const int32_t index)
static const int kHGCalTriggerSubdetOffset

◆ validCell()

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

Implements HGCalTriggerGeometryBase.

Definition at line 1031 of file HGCalTriggerGeometryV9Imp3.cc.

References DetId::det(), HGCalTriggerGeometryBase::eeTopology(), DetId::Forward, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, HGCalTriggerGeometryBase::hscTopology(), HGCalTriggerGeometryBase::hsiTopology(), HGCalTriggerGeometryBase::noseTopology(), and HGCalTopology::valid().

1031  {
1032  bool is_valid = false;
1033  unsigned det = DetId(cell_id).det();
1034  switch (det) {
1035  case DetId::HGCalEE:
1036  is_valid = eeTopology().valid(cell_id);
1037  break;
1038  case DetId::HGCalHSi:
1039  is_valid = hsiTopology().valid(cell_id);
1040  break;
1041  case DetId::HGCalHSc:
1042  is_valid = hscTopology().valid(cell_id);
1043  break;
1044  case DetId::Forward:
1045  is_valid = noseTopology().valid(cell_id);
1046  break;
1047  default:
1048  is_valid = false;
1049  break;
1050  }
1051  return is_valid;
1052 }
bool valid(const DetId &id) const override
Is this a valid cell id.
const HGCalTopology & eeTopology() const
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
Definition: DetId.h:17
const HGCalTopology & noseTopology() const
const HGCalTopology & hscTopology() const
const HGCalTopology & hsiTopology() const

◆ validCellId()

bool HGCalTriggerGeometryV9Imp3::validCellId ( unsigned  det,
unsigned  cell_id 
) const
private

Definition at line 1070 of file HGCalTriggerGeometryV9Imp3.cc.

References HGCalTriggerGeometryBase::eeTopology(), DetId::Forward, DetId::HGCalEE, DetId::HGCalHSc, DetId::HGCalHSi, HGCalTriggerGeometryBase::hscTopology(), HGCalTriggerGeometryBase::hsiTopology(), HGCalTriggerGeometryBase::noseTopology(), and HGCalTopology::valid().

Referenced by getCellsFromTriggerCell(), and validTriggerCellFromCells().

1070  {
1071  bool is_valid = false;
1072  switch (subdet) {
1073  case DetId::HGCalEE:
1074  is_valid = eeTopology().valid(cell_id);
1075  break;
1076  case DetId::HGCalHSi:
1077  is_valid = hsiTopology().valid(cell_id);
1078  break;
1079  case DetId::HGCalHSc:
1080  is_valid = hscTopology().valid(cell_id);
1081  break;
1082  case DetId::Forward:
1083  is_valid = noseTopology().valid(cell_id);
1084  break;
1085  default:
1086  is_valid = false;
1087  break;
1088  }
1089  return is_valid;
1090 }
bool valid(const DetId &id) const override
Is this a valid cell id.
const HGCalTopology & eeTopology() const
const HGCalTopology & noseTopology() const
const HGCalTopology & hscTopology() const
const HGCalTopology & hsiTopology() const

◆ validTriggerCell()

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

Implements HGCalTriggerGeometryBase.

Definition at line 1000 of file HGCalTriggerGeometryV9Imp3.cc.

References validTriggerCellFromCells().

1000  {
1001  return validTriggerCellFromCells(trigger_cell_id);
1002 }
bool validTriggerCellFromCells(const unsigned) const

◆ validTriggerCellFromCells()

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

Definition at line 1054 of file HGCalTriggerGeometryV9Imp3.cc.

References hgcalTBTopologyTester_cfi::cells, DetId::det(), getCellsFromTriggerCell(), and validCellId().

Referenced by getOrderedTriggerCellsFromModule(), getTriggerCellsFromModule(), and validTriggerCell().

1054  {
1055  // Check the validity of a trigger cell with the
1056  // validity of the cells. One valid cell in the
1057  // trigger cell is enough to make the trigger cell
1058  // valid.
1059  const geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
1060  bool is_valid = false;
1061  for (const auto cell_id : cells) {
1062  unsigned det = DetId(cell_id).det();
1063  is_valid |= validCellId(det, cell_id);
1064  if (is_valid)
1065  break;
1066  }
1067  return is_valid;
1068 }
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
bool validCellId(unsigned det, unsigned cell_id) const
Definition: DetId.h:17
std::unordered_set< unsigned > geom_set
geom_set getCellsFromTriggerCell(const unsigned) const final

Member Data Documentation

◆ disconnected_layers_

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

◆ geom_rotation_120_

HGCalGeomRotation HGCalTriggerGeometryV9Imp3::geom_rotation_120_ = {HGCalGeomRotation::SectorType::Sector120Degrees}
private

◆ heOffset_

unsigned HGCalTriggerGeometryV9Imp3::heOffset_ = 0
private

◆ hSc_back_layers_split_

constexpr unsigned HGCalTriggerGeometryV9Imp3::hSc_back_layers_split_ = 8
staticprivate

◆ hSc_front_layers_split_

constexpr unsigned HGCalTriggerGeometryV9Imp3::hSc_front_layers_split_ = 12
staticprivate

◆ hSc_layer_for_split_

constexpr unsigned HGCalTriggerGeometryV9Imp3::hSc_layer_for_split_ = 40
staticprivate

◆ hSc_num_panels_per_sector_

constexpr unsigned HGCalTriggerGeometryV9Imp3::hSc_num_panels_per_sector_ = 12
staticprivate

◆ hSc_tc_layer0_min_

constexpr int HGCalTriggerGeometryV9Imp3::hSc_tc_layer0_min_ = 24
staticprivate

◆ hSc_tcs_per_module_phi_

constexpr unsigned HGCalTriggerGeometryV9Imp3::hSc_tcs_per_module_phi_ = 4
staticprivate

◆ hSc_triggercell_size_

unsigned HGCalTriggerGeometryV9Imp3::hSc_triggercell_size_ = 2
private

◆ jsonMappingFile_

edm::FileInPath HGCalTriggerGeometryV9Imp3::jsonMappingFile_
private

Definition at line 78 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps().

◆ last_trigger_layer_

unsigned HGCalTriggerGeometryV9Imp3::last_trigger_layer_ = 0
private

Definition at line 101 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by initialize(), and lastTriggerLayer().

◆ links_per_module_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::links_per_module_
private

Definition at line 84 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), and getLinksInModule().

◆ lpgbt_to_modules_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::lpgbt_to_modules_
private

Definition at line 93 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getModulesFromLpgbt(), and reset().

◆ lpgbt_to_stage1_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::lpgbt_to_stage1_
private

Definition at line 92 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getStage1FpgaFromLpgbt(), and reset().

◆ module_to_lpgbts_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::module_to_lpgbts_
private

Definition at line 94 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getLpgbtsFromModule(), and reset().

◆ module_to_stage1_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::module_to_stage1_
private

◆ noseLayers_

unsigned HGCalTriggerGeometryV9Imp3::noseLayers_ = 0
private

Definition at line 105 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by initialize().

◆ nSectors_

constexpr int HGCalTriggerGeometryV9Imp3::nSectors_ = 3
staticprivate

◆ ntc_per_wafer_

constexpr int HGCalTriggerGeometryV9Imp3::ntc_per_wafer_ = 48
staticprivate

Definition at line 75 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by tcEtaphiMappingToSector0().

◆ stage1_to_lpgbts_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::stage1_to_lpgbts_
private

Definition at line 91 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getLpgbtsFromStage1Fpga(), and reset().

◆ stage1_to_stage1links_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::stage1_to_stage1links_
private

Definition at line 90 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getStage1LinksFromStage1Fpga(), and reset().

◆ stage1link_to_stage1_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::stage1link_to_stage1_
private

Definition at line 89 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getStage1FpgaFromStage1Link(), and reset().

◆ stage1link_to_stage2_

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::stage1link_to_stage2_
private

Definition at line 88 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getStage2FpgaFromStage1Link(), and reset().

◆ stage1links_samesector_

std::unordered_map<unsigned, bool> HGCalTriggerGeometryV9Imp3::stage1links_samesector_
private

Definition at line 87 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getStage1LinksFromStage2Fpga(), and reset().

◆ stage2_to_stage1links_

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryV9Imp3::stage2_to_stage1links_
private

Definition at line 86 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by fillMaps(), getStage1LinksFromStage2Fpga(), and reset().

◆ totalLayers_

unsigned HGCalTriggerGeometryV9Imp3::totalLayers_ = 0
private

Definition at line 106 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by initialize().

◆ trigger_layers_

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

Definition at line 99 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by initialize(), and triggerLayer().

◆ trigger_nose_layers_

std::vector<unsigned> HGCalTriggerGeometryV9Imp3::trigger_nose_layers_
private

Definition at line 100 of file HGCalTriggerGeometryV9Imp3.cc.

Referenced by initialize(), and triggerLayer().