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
 
std::vector< unsigned > 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_map< unsigned, std::vector< 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:307
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 1095 of file HGCalTriggerGeometryV9Imp3.cc.

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

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

1095  {
1096  int wafer_type = 0;
1097  switch (det) {
1098  case DetId::HGCalEE:
1099  wafer_type = eeTopology().dddConstants().getTypeHex(layer, waferU, waferV);
1100  break;
1101  case DetId::HGCalHSi:
1102  wafer_type = hsiTopology().dddConstants().getTypeHex(layer, waferU, waferV);
1103  break;
1104  case DetId::HGCalHSc:
1105  wafer_type = hscTopology().dddConstants().getTypeTrap(layer);
1106  break;
1107  default:
1108  break;
1109  };
1110  return wafer_type;
1111 }
int32_t waferU(const int32_t index)
const HGCalTopology & eeTopology() const
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 1007 of file HGCalTriggerGeometryV9Imp3.cc.

References disconnected_layers_, EcalPhiSymFlatTableProducers_cfi::id, nano_mu_digi_cff::layer, layerWithOffset(), edm::service::monitor_file_utilities::module_id(), module_to_stage1_, and packLayerSubdetWaferId().

1007  {
1008  bool disconnected = false;
1010  if (module_to_stage1_.find(packLayerSubdetWaferId(id.layer(), id.triggerSubdetId(), id.moduleU(), id.moduleV())) ==
1011  module_to_stage1_.end()) {
1012  disconnected = true;
1013  }
1015  disconnected = true;
1016  }
1017  return disconnected;
1018 }
auto module_id(edm::ModuleCallingContext const &mcc)
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 934 of file HGCalTriggerGeometryV9Imp3.cc.

References hSc_num_panels_per_sector_, hcalRecHitTable_cff::iphi, and nano_mu_digi_cff::sector.

Referenced by getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

934  {
935  if (sector == 0) {
936  return;
937  }
938  if (sector == 2) {
940  } else if (sector == 1) {
942  }
943 }
static constexpr unsigned hSc_num_panels_per_sector_

◆ fillMaps()

void HGCalTriggerGeometryV9Imp3::fillMaps ( )
private

Definition at line 800 of file HGCalTriggerGeometryV9Imp3.cc.

References MillePedeFileConverter_cfg::e, cppFunctionSkipper::exception, Exception, edm::FileInPath::fullPath(), jsonMappingFile_, nano_mu_digi_cff::layer, layerWithoutOffsetAndSubdetId(), links_per_module_, lpgbt_to_modules_, lpgbt_to_stage1_, 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().

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

Referenced by getModulePosition().

359  {
360  geom_set cell_det_ids;
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
auto module_id(edm::ModuleCallingContext const &mcc)
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_, hcalRecHitTable_cff::ieta, ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), HGCScintillatorDetId::ietaAbs(), createfilelist::int, hcalRecHitTable_cff::iphi, HGCScintillatorDetId::iphi(), nano_mu_digi_cff::layer, HFNoseTriggerDetId::layer(), HGCalTriggerDetId::layer(), HGCScintillatorDetId::layer(), HGCalTriggerDetId::subdet(), HFNoseTriggerDetId::type(), HGCalTriggerDetId::type(), HGCScintillatorDetId::type(), validCellId(), HFNoseTriggerDetId::waferU(), HGCalTriggerDetId::waferU(), HFNoseTriggerDetId::waferV(), HGCalTriggerDetId::waferV(), HFNoseTriggerDetId::zside(), HGCalTriggerDetId::zside(), HGCScintillatorDetId::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 &)
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
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_, edm::service::monitor_file_utilities::module_id(), 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_
auto module_id(edm::ModuleCallingContext const &mcc)
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 714 of file HGCalTriggerGeometryV9Imp3.cc.

References EcalPhiSymFlatTableProducers_cfi::id, nano_mu_digi_cff::layer, edm::service::monitor_file_utilities::module_id(), module_to_lpgbts_, packLayerSubdetWaferId(), nano_mu_digi_cff::sector, and ecaldqm::zside().

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

◆ getLpgbtsFromStage1Fpga()

std::vector< unsigned > HGCalTriggerGeometryV9Imp3::getLpgbtsFromStage1Fpga ( const unsigned  stage1_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 657 of file HGCalTriggerGeometryV9Imp3.cc.

References EcalPhiSymFlatTableProducers_cfi::id, label, nano_mu_digi_cff::sector, stage1_to_lpgbts_, and ecaldqm::zside().

657  {
658  std::vector<unsigned> lpgbt_ids;
659  HGCalTriggerBackendDetId id(stage1_id);
660 
661  const auto stage1_lpgbts = stage1_to_lpgbts_.at(id.label());
662  lpgbt_ids.reserve(stage1_lpgbts.size());
663  for (const auto& stage1_lpgbt : stage1_lpgbts) {
664  lpgbt_ids.emplace_back(
665  HGCalTriggerBackendDetId(id.zside(), HGCalTriggerBackendDetId::BackendType::LpGBT, id.sector(), stage1_lpgbt));
666  }
667 
668  return lpgbt_ids;
669 }
int zside(DetId const &)
char const * label
std::unordered_map< unsigned, std::vector< unsigned > > stage1_to_lpgbts_

◆ 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, hcalRecHitTable_cff::ieta, HGCScintillatorDetId::ietaAbs(), hcalRecHitTable_cff::iphi, HGCScintillatorDetId::iphi(), nano_mu_digi_cff::layer, HFNoseTriggerDetId::layer(), HGCalTriggerDetId::layer(), HGCScintillatorDetId::layer(), edm::service::monitor_file_utilities::module_id(), nano_mu_digi_cff::sector, HGCalTriggerDetId::subdet(), tcEtaphiMappingToSector0(), HFNoseTriggerDetId::type(), HGCalTriggerDetId::type(), HGCScintillatorDetId::type(), HGCalGeomRotation::uvMappingToSector0(), HFNoseTriggerDetId::waferU(), HGCalTriggerDetId::waferU(), HFNoseTriggerDetId::waferV(), HGCalTriggerDetId::waferV(), HFNoseTriggerDetId::zside(), HGCalTriggerDetId::zside(), HGCScintillatorDetId::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
auto module_id(edm::ModuleCallingContext const &mcc)
int zside(DetId const &)
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
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 770 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().

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

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

679  {
681  HGCalTriggerBackendDetId id(lpgbt_id);
682 
683  auto lpgbt_itrs = lpgbt_to_modules_.equal_range(id.label());
684  for (auto lpgbt_itr = lpgbt_itrs.first; lpgbt_itr != lpgbt_itrs.second; lpgbt_itr++) {
685  unsigned layer = 0;
686  int moduleU = 0;
687  int moduleV = 0;
688  int subdet = 0;
689  unpackLayerSubdetWaferId(lpgbt_itr->second, layer, subdet, moduleU, moduleV);
690  unsigned det = 0;
691  switch (subdet) {
693  det = DetId::HGCalEE;
694  break;
696  det = DetId::HGCalHSi;
697  break;
699  det = DetId::HGCalHSc;
700  break;
701  default:
702  det = DetId::HGCalEE;
703  break;
704  }
705 
706  int type = detIdWaferType(det, layer, moduleU, moduleV);
708  HGCalTriggerSubdetector(subdet), id.zside(), type, layer, id.sector(), moduleU, moduleV));
709  }
710 
711  return modules;
712 }
HGCalTriggerSubdetector
std::unordered_multimap< unsigned, unsigned > lpgbt_to_modules_
int zside(DetId const &)
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
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 nano_mu_digi_cff::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(), getOrderedTriggerCellsFromModule(), and edm::service::monitor_file_utilities::module_id().

371  {
372  geom_ordered_set cell_det_ids;
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
auto module_id(edm::ModuleCallingContext const &mcc)
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::HGCalHD120, HGCSiliconDetId::HGCalHD200, 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, hcalRecHitTable_cff::ieta, ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), createfilelist::int, hcalRecHitTable_cff::iphi, nano_mu_digi_cff::layer, HGCalTriggerModuleDetId::layer(), edm::service::monitor_file_utilities::module_id(), 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::HGCalHD120) || (wafer_type == HGCSiliconDetId::HGCalHD200)) ? 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
auto module_id(edm::ModuleCallingContext const &mcc)
static constexpr unsigned hSc_back_layers_split_
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
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 nano_mu_digi_cff::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 988 of file HGCalTriggerGeometryV9Imp3.cc.

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

Referenced by getModuleFromTriggerCell().

989  {
990  iphi = (tc_phi - 1) / hSc_tcs_per_module_phi_; //Phi index 1-12
991 
993  if (layer > hSc_layer_for_split_) {
995  }
996  if (tc_eta <= split) {
997  ieta = 0;
998  } else {
999  ieta = 1;
1000  }
1001 }
static constexpr unsigned hSc_tcs_per_module_phi_
static constexpr unsigned hSc_back_layers_split_
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 671 of file HGCalTriggerGeometryV9Imp3.cc.

References EcalPhiSymFlatTableProducers_cfi::id, label, lpgbt_to_stage1_, nano_mu_digi_cff::sector, and ecaldqm::zside().

671  {
672  HGCalTriggerBackendDetId id(lpgbt_id);
673  unsigned stage1_label = lpgbt_to_stage1_.at(id.label());
674 
676  id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1FPGA, id.sector(), stage1_label);
677 }
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 728 of file HGCalTriggerGeometryV9Imp3.cc.

References EcalPhiSymFlatTableProducers_cfi::id, nano_mu_digi_cff::layer, edm::service::monitor_file_utilities::module_id(), module_to_stage1_, packLayerSubdetWaferId(), nano_mu_digi_cff::sector, and ecaldqm::zside().

728  {
730 
731  unsigned stage1_label =
732  module_to_stage1_.at(packLayerSubdetWaferId(id.layer(), id.triggerSubdetId(), id.moduleU(), id.moduleV()));
733 
735  id.zside(), HGCalTriggerBackendDetId::BackendType::Stage1FPGA, id.sector(), stage1_label);
736 }
auto module_id(edm::ModuleCallingContext const &mcc)
int zside(DetId const &)
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 EcalPhiSymFlatTableProducers_cfi::id, label, nano_mu_digi_cff::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 EcalPhiSymFlatTableProducers_cfi::id, label, nano_mu_digi_cff::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(), EcalPhiSymFlatTableProducers_cfi::id, label, nano_mu_digi_cff::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(), EcalPhiSymFlatTableProducers_cfi::id, label, nano_mu_digi_cff::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_, hcalRecHitTable_cff::ieta, HGCScintillatorDetId::ietaAbs(), hcalRecHitTable_cff::iphi, HGCScintillatorDetId::iphi(), HFNoseDetId::layer(), HGCScintillatorDetId::layer(), HGCSiliconDetId::layer(), DetId::subdetId(), HFNoseDetId::triggerCellU(), HGCSiliconDetId::triggerCellU(), HFNoseDetId::triggerCellV(), HGCSiliconDetId::triggerCellV(), HFNoseDetId::type(), HGCScintillatorDetId::type(), HGCSiliconDetId::type(), HFNoseDetId::waferU(), HGCSiliconDetId::waferU(), HFNoseDetId::waferV(), HGCSiliconDetId::waferV(), HFNoseDetId::zside(), HGCScintillatorDetId::zside(), and HGCSiliconDetId::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 738 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().

738  {
739  unsigned det = DetId(trigger_cell_det_id).det();
740 
741  // Position: barycenter of the trigger cell.
742  Basic3DVector<float> triggerCellVector(0., 0., 0.);
743  const auto cell_ids = getCellsFromTriggerCell(trigger_cell_det_id);
744  // Scintillator
745  if (det == DetId::HGCalHSc) {
746  for (const auto& cell : cell_ids) {
747  triggerCellVector += hscGeometry()->getPosition(cell).basicVector();
748  }
749  }
750  // HFNose
751  else if (det == DetId::HGCalTrigger and
752  HGCalTriggerDetId(trigger_cell_det_id).subdet() == HGCalTriggerSubdetector::HFNoseTrigger) {
753  for (const auto& cell : cell_ids) {
754  HFNoseDetId cellDetId(cell);
755  triggerCellVector += noseGeometry()->getPosition(cellDetId).basicVector();
756  }
757  }
758  // Silicon
759  else {
760  for (const auto& cell : cell_ids) {
761  HGCSiliconDetId cellDetId(cell);
762  triggerCellVector += (cellDetId.det() == DetId::HGCalEE ? eeGeometry()->getPosition(cellDetId)
763  : hsiGeometry()->getPosition(cellDetId))
764  .basicVector();
765  }
766  }
767  return GlobalPoint(triggerCellVector / cell_ids.size());
768 }
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
GlobalPoint getPosition(const DetId &id, bool cog, bool debug) const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
Definition: DetId.h:17
const HGCalGeometry * hscGeometry() 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::HGCalHD120, HGCSiliconDetId::HGCalHD200, 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, hcalRecHitTable_cff::ieta, ALPAKA_ACCELERATOR_NAMESPACE::ecal::reconstruction::internal::barrel::ietaAbs(), createfilelist::int, hcalRecHitTable_cff::iphi, nano_mu_digi_cff::layer, HGCalTriggerModuleDetId::layer(), edm::service::monitor_file_utilities::module_id(), 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::HGCalHD120) || (wafer_type == HGCSiliconDetId::HGCalHD200)) ? 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
auto module_id(edm::ModuleCallingContext const &mcc)
static constexpr unsigned hSc_back_layers_split_
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ietaAbs(uint32_t id)
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 945 of file HGCalTriggerGeometryV9Imp3.cc.

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

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

945  {
946  if (subdet == HGCalTriggerSubdetector::HGCalEETrigger) { // CE-E
948  } else if (subdet == HGCalTriggerSubdetector::HGCalHSiTrigger) {
949  if ((layer % 2) == 1) { // CE-H Odd
951  } else { // CE-H Even
953  }
954  } else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) { //HFNose
956  } else {
957  edm::LogError("HGCalTriggerGeometryV9Imp3")
958  << "HGCalTriggerGeometryV9Imp3: trigger sub-detector expected to be silicon";
960  }
961 }
Log< level::Error, false > LogError

◆ 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_, nano_mu_digi_cff::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)
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_, nano_mu_digi_cff::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)
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 1127 of file HGCalTriggerGeometryV9Imp3.cc.

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

Referenced by disconnectedModule(), and triggerLayer().

1127  {
1128  unsigned det = DetId(id).det();
1129  unsigned layer = 0;
1130 
1131  if (det == DetId::HGCalTrigger) {
1132  unsigned subdet = HGCalTriggerDetId(id).subdet();
1134  layer = HGCalTriggerDetId(id).layer();
1135  } else if (subdet == HGCalTriggerSubdetector::HGCalHSiTrigger) {
1137  } else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) {
1138  layer = HFNoseTriggerDetId(id).layer();
1139  }
1140  } else if (det == DetId::HGCalHSc) {
1142  } else if (det == DetId::Forward) {
1143  unsigned subdet = HGCalTriggerModuleDetId(id).triggerSubdetId();
1146  } else if (subdet == HGCalTriggerSubdetector::HGCalHSiTrigger ||
1148  layer = heOffset_ + HGCalDetId(id).layer();
1149  } else if (subdet == HGCalTriggerSubdetector::HFNoseTrigger) {
1151  }
1152  }
1153  return layer;
1154 }
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
int layer() const
get the layer #
int layer() const
get the layer #
HGCalTriggerSubdetector subdet() const
get the subdetector
Definition: DetId.h:17
int layer() const
get the layer #
Definition: HGCalDetId.h:46
constexpr int layer() const
get the layer #
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 1113 of file HGCalTriggerGeometryV9Imp3.cc.

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

Referenced by fillMaps().

1113  {
1114  if (!isSilicon) {
1115  layer = layer - heOffset_;
1117  } else {
1118  if (layer > heOffset_) {
1120  layer = layer - heOffset_;
1121  } else {
1123  }
1124  }
1125 }

◆ packLayerSubdetWaferId()

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

Definition at line 912 of file HGCalTriggerGeometryV9Imp3.cc.

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

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

912  {
913  unsigned packed_value = 0;
914 
915  packed_value |=
917  packed_value |=
919  packed_value |= ((subdet & HGCalTriggerModuleDetId::kHGCalTriggerSubdetMask)
922  return packed_value;
923 }
static const int kHGCalTriggerSubdetMask
int32_t waferU(const int32_t index)
static const int kHGCalModuleVOffset
static const int kHGCalModuleUOffset
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_map< unsigned, std::vector< 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 963 of file HGCalTriggerGeometryV9Imp3.cc.

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

Referenced by getModuleFromTriggerCell().

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

◆ triggerLayer()

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

Implements HGCalTriggerGeometryBase.

Definition at line 1020 of file HGCalTriggerGeometryV9Imp3.cc.

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

1020  {
1021  unsigned layer = layerWithOffset(id);
1022 
1023  if (DetId(id).det() == DetId::HGCalTrigger and
1025  if (layer >= trigger_nose_layers_.size())
1026  return 0;
1027  return trigger_nose_layers_[layer];
1028  }
1029  if (layer >= trigger_layers_.size())
1030  return 0;
1031  return trigger_layers_[layer];
1032 }
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 925 of file HGCalTriggerGeometryV9Imp3.cc.

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

Referenced by getModulesFromLpgbt().

926  {
929  subdet =
932 }
static const int kHGCalTriggerSubdetMask
int32_t waferU(const int32_t index)
static const int kHGCalModuleVOffset
static const int kHGCalModuleUOffset
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 1034 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().

1034  {
1035  bool is_valid = false;
1036  unsigned det = DetId(cell_id).det();
1037  switch (det) {
1038  case DetId::HGCalEE:
1039  is_valid = eeTopology().valid(cell_id);
1040  break;
1041  case DetId::HGCalHSi:
1042  is_valid = hsiTopology().valid(cell_id);
1043  break;
1044  case DetId::HGCalHSc:
1045  is_valid = hscTopology().valid(cell_id);
1046  break;
1047  case DetId::Forward:
1048  is_valid = noseTopology().valid(cell_id);
1049  break;
1050  default:
1051  is_valid = false;
1052  break;
1053  }
1054  return is_valid;
1055 }
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 1073 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().

1073  {
1074  bool is_valid = false;
1075  switch (subdet) {
1076  case DetId::HGCalEE:
1077  is_valid = eeTopology().valid(cell_id);
1078  break;
1079  case DetId::HGCalHSi:
1080  is_valid = hsiTopology().valid(cell_id);
1081  break;
1082  case DetId::HGCalHSc:
1083  is_valid = hscTopology().valid(cell_id);
1084  break;
1085  case DetId::Forward:
1086  is_valid = noseTopology().valid(cell_id);
1087  break;
1088  default:
1089  is_valid = false;
1090  break;
1091  }
1092  return is_valid;
1093 }
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 1003 of file HGCalTriggerGeometryV9Imp3.cc.

References validTriggerCellFromCells().

1003  {
1004  return validTriggerCellFromCells(trigger_cell_id);
1005 }
bool validTriggerCellFromCells(const unsigned) const

◆ validTriggerCellFromCells()

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

Definition at line 1057 of file HGCalTriggerGeometryV9Imp3.cc.

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

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

1057  {
1058  // Check the validity of a trigger cell with the
1059  // validity of the cells. One valid cell in the
1060  // trigger cell is enough to make the trigger cell
1061  // valid.
1062  const geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
1063  bool is_valid = false;
1064  for (const auto cell_id : cells) {
1065  unsigned det = DetId(cell_id).det();
1066  is_valid |= validCellId(det, cell_id);
1067  if (is_valid)
1068  break;
1069  }
1070  return is_valid;
1071 }
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_map<unsigned, std::vector<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().