CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
HGCalTriggerGeometryV9Imp2 Class Reference
Inheritance diagram for HGCalTriggerGeometryV9Imp2:
HGCalTriggerGeometryBase

Public Member Functions

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

Private Member Functions

int detIdWaferType (unsigned det, unsigned layer, short waferU, short waferV) const
 
void fillMaps ()
 
unsigned layerWithOffset (unsigned) const
 
unsigned packLayerModuleId (unsigned layer, unsigned wafer) const
 
unsigned packLayerWaferId (unsigned layer, int waferU, int waferV) const
 
unsigned packWaferId (int waferU, int waferV) const
 
void unpackWaferId (unsigned wafer, 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_
 
std::unordered_set< unsigned > disconnected_modules_
 
unsigned heOffset_ = 0
 
unsigned hSc_links_per_module_ = 1
 
unsigned hSc_module_size_ = 12
 
unsigned hSc_triggercell_size_ = 2
 
unsigned hSc_wafers_per_module_ = 3
 
edm::FileInPath l1tLinksMapping_
 
edm::FileInPath l1tModulesMapping_
 
unsigned last_trigger_layer_ = 0
 
std::unordered_map< unsigned, unsigned > links_per_module_
 
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
 
unsigned totalLayers_ = 0
 
std::vector< unsigned > trigger_layers_
 
std::unordered_map< unsigned, unsigned > wafer_to_module_
 

Additional Inherited Members

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

Detailed Description

Definition at line 16 of file HGCalTriggerGeometryV9Imp2.cc.

Constructor & Destructor Documentation

HGCalTriggerGeometryV9Imp2::HGCalTriggerGeometryV9Imp2 ( const edm::ParameterSet conf)

Definition at line 86 of file HGCalTriggerGeometryV9Imp2.cc.

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

88  hSc_triggercell_size_(conf.getParameter<unsigned>("ScintillatorTriggerCellSize")),
89  hSc_module_size_(conf.getParameter<unsigned>("ScintillatorModuleSize")),
90  hSc_links_per_module_(conf.getParameter<unsigned>("ScintillatorLinksPerModule")),
91  l1tModulesMapping_(conf.getParameter<edm::FileInPath>("L1TModulesMapping")),
92  l1tLinksMapping_(conf.getParameter<edm::FileInPath>("L1TLinksMapping")) {
93  const unsigned ntc_per_wafer = 48;
94  hSc_wafers_per_module_ = std::round(hSc_module_size_ * hSc_module_size_ / float(ntc_per_wafer));
97  }
98  std::vector<unsigned> tmp_vector = conf.getParameter<std::vector<unsigned>>("DisconnectedModules");
99  std::move(tmp_vector.begin(), tmp_vector.end(), std::inserter(disconnected_modules_, disconnected_modules_.end()));
100  tmp_vector = conf.getParameter<std::vector<unsigned>>("DisconnectedLayers");
101  std::move(tmp_vector.begin(), tmp_vector.end(), std::inserter(disconnected_layers_, disconnected_layers_.end()));
102 }
HGCalTriggerGeometryBase(const edm::ParameterSet &conf)
T getParameter(std::string const &) const
std::unordered_set< unsigned > disconnected_modules_
std::unordered_set< unsigned > disconnected_layers_
def move(src, dest)
Definition: eostools.py:511

Member Function Documentation

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

Definition at line 615 of file HGCalTriggerGeometryV9Imp2.cc.

References HGCalTopology::dddConstants(), HGCalTriggerGeometryBase::eeTopology(), HGCalDDDConstants::getTypeHex(), DetId::HGCalEE, DetId::HGCalHSi, and HGCalTriggerGeometryBase::hsiTopology().

Referenced by getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

615  {
616  int wafer_type = 0;
617  switch (det) {
618  case DetId::HGCalEE:
619  wafer_type = eeTopology().dddConstants().getTypeHex(layer, waferU, waferV);
620  break;
621  case DetId::HGCalHSi:
622  wafer_type = hsiTopology().dddConstants().getTypeHex(layer, waferU, waferV);
623  break;
624  default:
625  break;
626  };
627  return wafer_type;
628 }
const HGCalTopology & eeTopology() const
int getTypeHex(int layer, int waferU, int waferV) const
const HGCalTopology & hsiTopology() const
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:96
bool HGCalTriggerGeometryV9Imp2::disconnectedModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 564 of file HGCalTriggerGeometryV9Imp2.cc.

References disconnected_layers_, disconnected_modules_, and layerWithOffset().

564  {
565  bool disconnected = false;
566  if (disconnected_modules_.find(HGCalDetId(module_id).wafer()) != disconnected_modules_.end())
567  disconnected = true;
568  if (disconnected_layers_.find(layerWithOffset(module_id)) != disconnected_layers_.end())
569  disconnected = true;
570  return disconnected;
571 }
std::unordered_set< unsigned > disconnected_modules_
std::unordered_set< unsigned > disconnected_layers_
unsigned layerWithOffset(unsigned) const
void HGCalTriggerGeometryV9Imp2::fillMaps ( )
private

Definition at line 471 of file HGCalTriggerGeometryV9Imp2.cc.

References Exception, edm::FileInPath::fullPath(), l1tLinksMapping_, l1tModulesMapping_, electronStore::links, links_per_module_, module_to_wafers_, packLayerModuleId(), packLayerWaferId(), packWaferId(), and wafer_to_module_.

Referenced by initialize().

471  {
472  // read module mapping file
473  std::ifstream l1tModulesMappingStream(l1tModulesMapping_.fullPath());
474  if (!l1tModulesMappingStream.is_open()) {
475  throw cms::Exception("MissingDataFile") << "Cannot open HGCalTriggerGeometry L1TModulesMapping file\n";
476  }
477  short waferu = 0;
478  short waferv = 0;
479  short module = 0;
480  short layer = 0;
481  for (; l1tModulesMappingStream >> layer >> waferu >> waferv >> module;) {
482  wafer_to_module_.emplace(packLayerWaferId(layer, waferu, waferv), module);
483  module_to_wafers_.emplace(packLayerModuleId(layer, module), packWaferId(waferu, waferv));
484  }
485  if (!l1tModulesMappingStream.eof()) {
486  throw cms::Exception("BadGeometryFile")
487  << "Error reading L1TModulesMapping '" << layer << " " << waferu << " " << waferv << " " << module << "' \n";
488  }
489  l1tModulesMappingStream.close();
490  // read links mapping file
491  std::ifstream l1tLinksMappingStream(l1tLinksMapping_.fullPath());
492  if (!l1tLinksMappingStream.is_open()) {
493  throw cms::Exception("MissingDataFile") << "Cannot open HGCalTriggerGeometry L1TLinksMapping file\n";
494  }
495  short links = 0;
496  for (; l1tLinksMappingStream >> layer >> module >> links;) {
497  if (module_to_wafers_.find(packLayerModuleId(layer, module)) == module_to_wafers_.end()) {
498  links = 0;
499  }
500  links_per_module_.emplace(packLayerModuleId(layer, module), links);
501  }
502  if (!l1tLinksMappingStream.eof()) {
503  throw cms::Exception("BadGeometryFile")
504  << "Error reading L1TLinksMapping '" << layer << " " << module << " " << links << "' \n";
505  }
506  l1tLinksMappingStream.close();
507 }
unsigned packWaferId(int waferU, int waferV) const
std::unordered_map< unsigned, unsigned > links_per_module_
std::unordered_map< unsigned, unsigned > wafer_to_module_
unsigned packLayerModuleId(unsigned layer, unsigned wafer) const
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
std::string fullPath() const
Definition: FileInPath.cc:163
unsigned packLayerWaferId(unsigned layer, int waferU, int waferV) const
Definition: vlib.h:198
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp2::getCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 256 of file HGCalTriggerGeometryV9Imp2.cc.

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

Referenced by getModulePosition().

256  {
257  geom_set cell_det_ids;
258  geom_set trigger_cells = getTriggerCellsFromModule(module_id);
259  for (auto trigger_cell_id : trigger_cells) {
260  geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
261  cell_det_ids.insert(cells.begin(), cells.end());
262  }
263  return cell_det_ids;
264 }
geom_set getCellsFromTriggerCell(const unsigned) const final
geom_set getTriggerCellsFromModule(const unsigned) const final
std::unordered_set< unsigned > geom_set
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp2::getCellsFromTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 215 of file HGCalTriggerGeometryV9Imp2.cc.

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

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

216  {
217  DetId trigger_cell_det_id(trigger_cell_id);
218  unsigned det = trigger_cell_det_id.det();
219  geom_set cell_det_ids;
220  // Scintillator
221  if (det == DetId::HGCalHSc) {
222  HGCScintillatorDetId trigger_cell_sc_id(trigger_cell_id);
223  int ieta0 = (trigger_cell_sc_id.ietaAbs() - 1) * hSc_triggercell_size_ + 1;
224  int iphi0 = (trigger_cell_sc_id.iphi() - 1) * hSc_triggercell_size_ + 1;
225  for (int ietaAbs = ieta0; ietaAbs < ieta0 + (int)hSc_triggercell_size_; ietaAbs++) {
226  int ieta = ietaAbs * trigger_cell_sc_id.zside();
227  for (int iphi = iphi0; iphi < iphi0 + (int)hSc_triggercell_size_; iphi++) {
228  unsigned cell_id = HGCScintillatorDetId(trigger_cell_sc_id.type(), trigger_cell_sc_id.layer(), ieta, iphi);
229  if (validCellId(DetId::HGCalHSc, cell_id))
230  cell_det_ids.emplace(cell_id);
231  }
232  }
233  }
234  // Silicon
235  else {
236  HGCalTriggerDetId trigger_cell_trig_id(trigger_cell_id);
237  unsigned subdet = trigger_cell_trig_id.subdet();
240  int layer = trigger_cell_trig_id.layer();
241  int zside = trigger_cell_trig_id.zside();
242  int type = trigger_cell_trig_id.type();
243  int waferu = trigger_cell_trig_id.waferU();
244  int waferv = trigger_cell_trig_id.waferV();
245  std::vector<int> cellus = trigger_cell_trig_id.cellU();
246  std::vector<int> cellvs = trigger_cell_trig_id.cellV();
247  for (unsigned ic = 0; ic < cellus.size(); ic++) {
248  HGCSiliconDetId cell_det_id(cell_det, zside, type, layer, waferu, waferv, cellus[ic], cellvs[ic]);
249  cell_det_ids.emplace(cell_det_id.rawId());
250  }
251  }
252  }
253  return cell_det_ids;
254 }
type
Definition: HCALResponse.h:21
bool validCellId(unsigned det, unsigned cell_id) const
int zside(DetId const &)
Definition: DetId.h:17
Detector
Definition: DetId.h:24
std::unordered_set< unsigned > geom_set
unsigned HGCalTriggerGeometryV9Imp2::getLinksInModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 389 of file HGCalTriggerGeometryV9Imp2.cc.

References DetId::det(), DetId::HGCalHSc, hSc_links_per_module_, layerWithOffset(), electronStore::links, links_per_module_, packLayerModuleId(), and HGCalDetId::wafer().

389  {
390  DetId module_det_id(module_id);
391  unsigned links = 0;
392  // Scintillator
393  if (module_det_id.det() == DetId::HGCalHSc) {
394  links = hSc_links_per_module_;
395  }
396  // Silicon
397  else {
398  HGCalDetId module_det_id_si(module_id);
399  unsigned module = module_det_id_si.wafer();
400  unsigned layer = layerWithOffset(module_id);
401  const unsigned sector0_mask = 0x7F;
402  module = (module & sector0_mask);
403  links = links_per_module_.at(packLayerModuleId(layer, module));
404  }
405  return links;
406 }
std::unordered_map< unsigned, unsigned > links_per_module_
unsigned packLayerModuleId(unsigned layer, unsigned wafer) const
Definition: DetId.h:17
unsigned layerWithOffset(unsigned) const
Definition: vlib.h:198
unsigned HGCalTriggerGeometryV9Imp2::getModuleFromCell ( const unsigned  cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 165 of file HGCalTriggerGeometryV9Imp2.cc.

References getModuleFromTriggerCell(), and getTriggerCellFromCell().

165  {
167 }
unsigned getTriggerCellFromCell(const unsigned) const final
unsigned getModuleFromTriggerCell(const unsigned) const final
unsigned HGCalTriggerGeometryV9Imp2::getModuleFromTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 169 of file HGCalTriggerGeometryV9Imp2.cc.

References HGCalTopology::dddConstants(), DetId::det(), Exception, HGCalDDDConstants::getREtaRange(), HGCalEETrigger, DetId::HGCalHSc, HGCalHSiTrigger, HGCEE, HGCHEF, hSc_module_size_, hSc_triggercell_size_, HGCalTriggerGeometryBase::hscTopology(), LEDCalibrationChannels::ieta, HGCScintillatorDetId::ietaAbs(), HGCScintillatorDetId::iphi(), LEDCalibrationChannels::iphi, HGCalDetId::kHGCalCellMask, HGCScintillatorDetId::layer(), HGCalTriggerDetId::layer(), layerWithOffset(), packLayerWaferId(), DetId::rawId(), HGCalTriggerDetId::subdet(), HGCScintillatorDetId::type(), wafer_to_module_, HGCalTriggerDetId::waferU(), HGCalTriggerDetId::waferV(), HGCScintillatorDetId::zside(), HGCalTriggerDetId::zside(), and ecaldqm::zside().

Referenced by getModuleFromCell().

169  {
170  unsigned det = DetId(trigger_cell_id).det();
171  unsigned module = 0;
172  unsigned subdet_old = 0;
173  int zside = 0;
174  unsigned tc_type = 1;
175  unsigned layer = 0;
176  unsigned module_id = 0;
177  // Scintillator
178  if (det == DetId::HGCalHSc) {
179  HGCScintillatorDetId trigger_cell_sc_id(trigger_cell_id);
180  tc_type = trigger_cell_sc_id.type();
181  layer = trigger_cell_sc_id.layer();
182  zside = trigger_cell_sc_id.zside();
183  int ietamin = hscTopology().dddConstants().getREtaRange(layer).first;
184  int ietamin_tc = ((ietamin - 1) / hSc_triggercell_size_ + 1);
185  int ieta = ((trigger_cell_sc_id.ietaAbs() - ietamin_tc) / hSc_module_size_ + 1) * zside;
186  int iphi = (trigger_cell_sc_id.iphi() - 1) / hSc_module_size_ + 1;
187  module_id = HGCScintillatorDetId(tc_type, layer, ieta, iphi);
188  }
189  // Silicon
190  else {
191  HGCalTriggerDetId trigger_cell_trig_id(trigger_cell_id);
192  unsigned subdet = trigger_cell_trig_id.subdet();
193  subdet_old =
195  layer = trigger_cell_trig_id.layer();
196  zside = trigger_cell_trig_id.zside();
198  int waferu = trigger_cell_trig_id.waferU();
199  int waferv = trigger_cell_trig_id.waferV();
200  unsigned layer_with_offset = layerWithOffset(trigger_cell_id);
201  auto module_itr = wafer_to_module_.find(packLayerWaferId(layer_with_offset, waferu, waferv));
202  if (module_itr == wafer_to_module_.end()) {
203  throw cms::Exception("BadGeometry")
204  << trigger_cell_trig_id << "HGCalTriggerGeometry: Wafer (" << waferu << "," << waferv
205  << ") is not mapped to any trigger module. The module mapping should be modified. \n";
206  }
207  module = module_itr->second;
208  }
209  module_id =
210  HGCalDetId((ForwardSubdetector)subdet_old, zside, layer, tc_type, module, HGCalDetId::kHGCalCellMask).rawId();
211  }
212  return module_id;
213 }
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
std::unordered_map< unsigned, unsigned > wafer_to_module_
int zside(DetId const &)
ForwardSubdetector
static const int kHGCalCellMask
Definition: HGCalDetId.h:11
std::pair< int, int > getREtaRange(int lay) const
Definition: DetId.h:17
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:96
const HGCalTopology & hscTopology() const
unsigned layerWithOffset(unsigned) const
unsigned packLayerWaferId(unsigned layer, int waferU, int waferV) const
Definition: vlib.h:198
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
GlobalPoint HGCalTriggerGeometryV9Imp2::getModulePosition ( const unsigned  module_det_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 448 of file HGCalTriggerGeometryV9Imp2.cc.

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

448  {
449  unsigned det = DetId(module_det_id).det();
450  // Position: barycenter of the module.
451  Basic3DVector<float> moduleVector(0., 0., 0.);
452  const auto cell_ids = getCellsFromModule(module_det_id);
453  // Scintillator
454  if (det == DetId::HGCalHSc) {
455  for (const auto& cell : cell_ids) {
456  moduleVector += hscGeometry()->getPosition(cell).basicVector();
457  }
458  }
459  // Silicon
460  else {
461  for (const auto& cell : cell_ids) {
462  HGCSiliconDetId cellDetId(cell);
463  moduleVector += (cellDetId.det() == DetId::HGCalEE ? eeGeometry()->getPosition(cellDetId)
464  : hsiGeometry()->getPosition(cellDetId))
465  .basicVector();
466  }
467  }
468  return GlobalPoint(moduleVector / cell_ids.size());
469 }
const HGCalGeometry * eeGeometry() const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
GlobalPoint getPosition(const DetId &id) const
geom_set getCellsFromModule(const unsigned) const final
const HGCalGeometry * hsiGeometry() const
Definition: DetId.h:17
const HGCalGeometry * hscGeometry() const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
unsigned HGCalTriggerGeometryV9Imp2::getModuleSize ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 408 of file HGCalTriggerGeometryV9Imp2.cc.

References DetId::det(), DetId::HGCalHSc, hSc_wafers_per_module_, layerWithOffset(), module_to_wafers_, packLayerModuleId(), and HGCalDetId::wafer().

408  {
409  DetId module_det_id(module_id);
410  unsigned nWafers = 1;
411  // Scintillator
412  if (module_det_id.det() == DetId::HGCalHSc) {
413  nWafers = hSc_wafers_per_module_;
414  }
415  // Silicon
416  else {
417  HGCalDetId module_det_id_si(module_id);
418  unsigned module = module_det_id_si.wafer();
419  unsigned layer = layerWithOffset(module_id);
420  nWafers = module_to_wafers_.count(packLayerModuleId(layer, module));
421  }
422  return nWafers;
423 }
unsigned packLayerModuleId(unsigned layer, unsigned wafer) const
Definition: DetId.h:17
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
unsigned layerWithOffset(unsigned) const
Definition: vlib.h:198
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp2::getNeighborsFromTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 384 of file HGCalTriggerGeometryV9Imp2.cc.

References Exception.

385  {
386  throw cms::Exception("FeatureNotImplemented") << "Neighbor search is not implemented in HGCalTriggerGeometryV9Imp2";
387 }
HGCalTriggerGeometryBase::geom_ordered_set HGCalTriggerGeometryV9Imp2::getOrderedCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 266 of file HGCalTriggerGeometryV9Imp2.cc.

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

267  {
268  geom_ordered_set cell_det_ids;
269  geom_ordered_set trigger_cells = getOrderedTriggerCellsFromModule(module_id);
270  for (auto trigger_cell_id : trigger_cells) {
271  geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
272  cell_det_ids.insert(cells.begin(), cells.end());
273  }
274  return cell_det_ids;
275 }
geom_set getCellsFromTriggerCell(const unsigned) const final
geom_ordered_set getOrderedTriggerCellsFromModule(const unsigned) const final
std::set< unsigned > geom_ordered_set
std::unordered_set< unsigned > geom_set
HGCalTriggerGeometryBase::geom_ordered_set HGCalTriggerGeometryV9Imp2::getOrderedTriggerCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 332 of file HGCalTriggerGeometryV9Imp2.cc.

References DetId::det(), detIdWaferType(), HGCSiliconDetIdToROC::getTriggerId(), DetId::HGCalEE, HGCalEETrigger, HGCSiliconDetId::HGCalFine, DetId::HGCalHSc, DetId::HGCalHSi, HGCalHSiTrigger, HGCEE, hSc_module_size_, LEDCalibrationChannels::ieta, HGCScintillatorDetId::ietaAbs(), createfilelist::int, HGCScintillatorDetId::iphi(), LEDCalibrationChannels::iphi, HGCalDetId::layer(), HGCScintillatorDetId::layer(), layerWithOffset(), module_to_wafers_, packLayerModuleId(), PixelMapPlotter::roc, DetId::subdetId(), HGCScintillatorDetId::type(), unpackWaferId(), validTriggerCellFromCells(), HGCalDetId::wafer(), HGCScintillatorDetId::zside(), and HGCalDetId::zside().

Referenced by getOrderedCellsFromModule().

333  {
334  DetId module_det_id(module_id);
335  unsigned det = module_det_id.det();
336  geom_ordered_set trigger_cell_det_ids;
337  // Scintillator
338  if (det == DetId::HGCalHSc) {
339  HGCScintillatorDetId module_sc_id(module_id);
340  int ieta0 = (module_sc_id.ietaAbs() - 1) * hSc_module_size_ + 1;
341  int iphi0 = (module_sc_id.iphi() - 1) * hSc_module_size_ + 1;
342  for (int ietaAbs = ieta0; ietaAbs < ieta0 + (int)hSc_module_size_; ietaAbs++) {
343  int ieta = ietaAbs * module_sc_id.zside();
344  for (int iphi = iphi0; iphi < iphi0 + (int)hSc_module_size_; iphi++) {
345  unsigned trigger_cell_id = HGCScintillatorDetId(module_sc_id.type(), module_sc_id.layer(), ieta, iphi);
346  if (validTriggerCellFromCells(trigger_cell_id))
347  trigger_cell_det_ids.emplace(trigger_cell_id);
348  }
349  }
350  }
351  // EE or FH
352  else {
353  HGCalDetId module_si_id(module_id);
354  unsigned module = module_si_id.wafer();
355  HGCSiliconDetIdToROC tc2roc;
356  auto wafer_itrs = module_to_wafers_.equal_range(packLayerModuleId(layerWithOffset(module_id), module));
357  // loop on the wafers included in the module
358  for (auto wafer_itr = wafer_itrs.first; wafer_itr != wafer_itrs.second; wafer_itr++) {
359  int waferu = 0;
360  int waferv = 0;
361  unpackWaferId(wafer_itr->second, waferu, waferv);
362  DetId::Detector det = (module_si_id.subdetId() == ForwardSubdetector::HGCEE ? DetId::HGCalEE : DetId::HGCalHSi);
363  HGCalTriggerSubdetector subdet =
366  unsigned layer = module_si_id.layer();
367  unsigned wafer_type = detIdWaferType(det, layer, waferu, waferv);
368  int nroc = (wafer_type == HGCSiliconDetId::HGCalFine ? 6 : 3);
369  // Loop on ROCs in wafer
370  for (int roc = 1; roc <= nroc; roc++) {
371  // loop on TCs in ROC
372  auto tc_uvs = tc2roc.getTriggerId(roc, wafer_type);
373  for (const auto& tc_uv : tc_uvs) {
374  HGCalTriggerDetId trigger_cell_id(
375  subdet, module_si_id.zside(), wafer_type, layer, waferu, waferv, tc_uv.first, tc_uv.second);
376  trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
377  }
378  }
379  }
380  }
381  return trigger_cell_det_ids;
382 }
HGCalTriggerSubdetector
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
std::vector< std::pair< int, int > > getTriggerId(int roc, int type) const
void unpackWaferId(unsigned wafer, int &waferU, int &waferV) const
unsigned packLayerModuleId(unsigned layer, unsigned wafer) const
Definition: DetId.h:17
Detector
Definition: DetId.h:24
std::set< unsigned > geom_ordered_set
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
unsigned layerWithOffset(unsigned) const
Definition: vlib.h:198
bool validTriggerCellFromCells(const unsigned) const
unsigned HGCalTriggerGeometryV9Imp2::getTriggerCellFromCell ( const unsigned  cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 138 of file HGCalTriggerGeometryV9Imp2.cc.

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

Referenced by getModuleFromCell().

138  {
139  unsigned det = DetId(cell_id).det();
140  unsigned trigger_cell_id = 0;
141  // Scintillator
142  if (det == DetId::HGCalHSc) {
143  // Very rough mapping from cells to TC
144  HGCScintillatorDetId cell_sc_id(cell_id);
145  int ieta = ((cell_sc_id.ietaAbs() - 1) / hSc_triggercell_size_ + 1) * cell_sc_id.zside();
146  int iphi = (cell_sc_id.iphi() - 1) / hSc_triggercell_size_ + 1;
147  trigger_cell_id = HGCScintillatorDetId(cell_sc_id.type(), cell_sc_id.layer(), ieta, iphi);
148  }
149  // Silicon
150  else if (det == DetId::HGCalEE || det == DetId::HGCalHSi) {
151  HGCSiliconDetId cell_si_id(cell_id);
152  trigger_cell_id = HGCalTriggerDetId(
154  cell_si_id.zside(),
155  cell_si_id.type(),
156  cell_si_id.layer(),
157  cell_si_id.waferU(),
158  cell_si_id.waferV(),
159  cell_si_id.triggerCellU(),
160  cell_si_id.triggerCellV());
161  }
162  return trigger_cell_id;
163 }
Definition: DetId.h:17
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
GlobalPoint HGCalTriggerGeometryV9Imp2::getTriggerCellPosition ( const unsigned  trigger_cell_det_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 425 of file HGCalTriggerGeometryV9Imp2.cc.

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

425  {
426  unsigned det = DetId(trigger_cell_det_id).det();
427  // Position: barycenter of the trigger cell.
428  Basic3DVector<float> triggerCellVector(0., 0., 0.);
429  const auto cell_ids = getCellsFromTriggerCell(trigger_cell_det_id);
430  // Scintillator
431  if (det == DetId::HGCalHSc) {
432  for (const auto& cell : cell_ids) {
433  triggerCellVector += hscGeometry()->getPosition(cell).basicVector();
434  }
435  }
436  // Silicon
437  else {
438  for (const auto& cell : cell_ids) {
439  HGCSiliconDetId cellDetId(cell);
440  triggerCellVector += (cellDetId.det() == DetId::HGCalEE ? eeGeometry()->getPosition(cellDetId)
441  : hsiGeometry()->getPosition(cellDetId))
442  .basicVector();
443  }
444  }
445  return GlobalPoint(triggerCellVector / cell_ids.size());
446 }
const HGCalGeometry * eeGeometry() const
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
GlobalPoint getPosition(const DetId &id) const
geom_set getCellsFromTriggerCell(const unsigned) const final
const HGCalGeometry * hsiGeometry() const
Definition: DetId.h:17
const HGCalGeometry * hscGeometry() const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryV9Imp2::getTriggerCellsFromModule ( const unsigned  module_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 277 of file HGCalTriggerGeometryV9Imp2.cc.

References HGCalTopology::dddConstants(), DetId::det(), detIdWaferType(), dqmdumpme::first, HGCalDDDConstants::getREtaRange(), HGCSiliconDetIdToROC::getTriggerId(), DetId::HGCalEE, HGCalEETrigger, HGCSiliconDetId::HGCalFine, DetId::HGCalHSc, DetId::HGCalHSi, HGCalHSiTrigger, HGCEE, hSc_module_size_, hSc_triggercell_size_, HGCalTriggerGeometryBase::hscTopology(), LEDCalibrationChannels::ieta, HGCScintillatorDetId::ietaAbs(), createfilelist::int, HGCScintillatorDetId::iphi(), LEDCalibrationChannels::iphi, HGCalDetId::layer(), HGCScintillatorDetId::layer(), layerWithOffset(), module_to_wafers_, packLayerModuleId(), PixelMapPlotter::roc, DetId::subdetId(), HGCScintillatorDetId::type(), unpackWaferId(), validTriggerCellFromCells(), HGCalDetId::wafer(), HGCScintillatorDetId::zside(), and HGCalDetId::zside().

Referenced by getCellsFromModule().

278  {
279  DetId module_det_id(module_id);
280  unsigned det = module_det_id.det();
281  geom_set trigger_cell_det_ids;
282  // Scintillator
283  if (det == DetId::HGCalHSc) {
284  HGCScintillatorDetId module_sc_id(module_id);
285  int ietamin = hscTopology().dddConstants().getREtaRange(module_sc_id.layer()).first;
286  int ietamin_tc = ((ietamin - 1) / hSc_triggercell_size_ + 1);
287  int ieta0 = (module_sc_id.ietaAbs() - 1) * hSc_module_size_ + ietamin_tc;
288  int iphi0 = (module_sc_id.iphi() - 1) * hSc_module_size_ + 1;
289  for (int ietaAbs = ieta0; ietaAbs < ieta0 + (int)hSc_module_size_; ietaAbs++) {
290  int ieta = ietaAbs * module_sc_id.zside();
291  for (int iphi = iphi0; iphi < iphi0 + (int)hSc_module_size_; iphi++) {
292  unsigned trigger_cell_id = HGCScintillatorDetId(module_sc_id.type(), module_sc_id.layer(), ieta, iphi);
293  if (validTriggerCellFromCells(trigger_cell_id))
294  trigger_cell_det_ids.emplace(trigger_cell_id);
295  }
296  }
297  }
298  // Silicon
299  else {
300  HGCalDetId module_si_id(module_id);
301  unsigned module = module_si_id.wafer();
302  HGCSiliconDetIdToROC tc2roc;
303  auto wafer_itrs = module_to_wafers_.equal_range(packLayerModuleId(layerWithOffset(module_id), module));
304  // loop on the wafers included in the module
305  for (auto wafer_itr = wafer_itrs.first; wafer_itr != wafer_itrs.second; wafer_itr++) {
306  int waferu = 0;
307  int waferv = 0;
308  unpackWaferId(wafer_itr->second, waferu, waferv);
309  DetId::Detector det = (module_si_id.subdetId() == ForwardSubdetector::HGCEE ? DetId::HGCalEE : DetId::HGCalHSi);
310  HGCalTriggerSubdetector subdet =
313  unsigned layer = module_si_id.layer();
314  unsigned wafer_type = detIdWaferType(det, layer, waferu, waferv);
315  int nroc = (wafer_type == HGCSiliconDetId::HGCalFine ? 6 : 3);
316  // Loop on ROCs in wafer
317  for (int roc = 1; roc <= nroc; roc++) {
318  // loop on TCs in ROC
319  auto tc_uvs = tc2roc.getTriggerId(roc, wafer_type);
320  for (const auto& tc_uv : tc_uvs) {
321  HGCalTriggerDetId trigger_cell_id(
322  subdet, module_si_id.zside(), wafer_type, layer, waferu, waferv, tc_uv.first, tc_uv.second);
323  if (validTriggerCellFromCells(trigger_cell_id))
324  trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
325  }
326  }
327  }
328  }
329  return trigger_cell_det_ids;
330 }
HGCalTriggerSubdetector
int detIdWaferType(unsigned det, unsigned layer, short waferU, short waferV) const
std::vector< std::pair< int, int > > getTriggerId(int roc, int type) const
void unpackWaferId(unsigned wafer, int &waferU, int &waferV) const
unsigned packLayerModuleId(unsigned layer, unsigned wafer) const
std::pair< int, int > getREtaRange(int lay) const
Definition: DetId.h:17
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:96
const HGCalTopology & hscTopology() const
Detector
Definition: DetId.h:24
std::unordered_set< unsigned > geom_set
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
unsigned layerWithOffset(unsigned) const
Definition: vlib.h:198
bool validTriggerCellFromCells(const unsigned) const
void HGCalTriggerGeometryV9Imp2::initialize ( const CaloGeometry calo_geometry)
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 109 of file HGCalTriggerGeometryV9Imp2.cc.

References Exception.

109  {
110  throw cms::Exception("BadGeometry")
111  << "HGCalTriggerGeometryV9Imp2 geometry cannot be initialized with the V7/V8 HGCAL geometry";
112 }
void HGCalTriggerGeometryV9Imp2::initialize ( const HGCalGeometry hgc_ee_geometry,
const HGCalGeometry hgc_hsi_geometry,
const HGCalGeometry hgc_hsc_geometry 
)
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 114 of file HGCalTriggerGeometryV9Imp2.cc.

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

116  {
117  setEEGeometry(hgc_ee_geometry);
118  setHSiGeometry(hgc_hsi_geometry);
119  setHScGeometry(hgc_hsc_geometry);
122  trigger_layers_.resize(totalLayers_ + 1);
123  trigger_layers_[0] = 0; // layer number 0 doesn't exist
124  unsigned trigger_layer = 1;
125  for (unsigned layer = 1; layer < trigger_layers_.size(); layer++) {
126  if (disconnected_layers_.find(layer) == disconnected_layers_.end()) {
127  // Increase trigger layer number if the layer is not disconnected
128  trigger_layers_[layer] = trigger_layer;
129  trigger_layer++;
130  } else {
131  trigger_layers_[layer] = 0;
132  }
133  }
134  last_trigger_layer_ = trigger_layer - 1;
135  fillMaps();
136 }
void setEEGeometry(const HGCalGeometry *geom)
std::vector< unsigned > trigger_layers_
const HGCalTopology & eeTopology() const
const HGCalTopology & hsiTopology() const
void setHSiGeometry(const HGCalGeometry *geom)
unsigned int layers(bool reco) const
void setHScGeometry(const HGCalGeometry *geom)
const HGCalDDDConstants & dddConstants() const
Definition: HGCalTopology.h:96
std::unordered_set< unsigned > disconnected_layers_
unsigned HGCalTriggerGeometryV9Imp2::lastTriggerLayer ( ) const
inlinefinalvirtual
unsigned HGCalTriggerGeometryV9Imp2::layerWithOffset ( unsigned  id) const
private

Definition at line 630 of file HGCalTriggerGeometryV9Imp2.cc.

References DEFINE_EDM_PLUGIN, DetId::det(), DetId::Forward, heOffset_, HGCalEETrigger, DetId::HGCalHSc, HGCalHSiTrigger, DetId::HGCalTrigger, HGCEE, HGCHEB, HGCHEF, HGCalDetId::layer(), HGCScintillatorDetId::layer(), HGCalTriggerDetId::layer(), HGCalTriggerDetId::subdet(), and DetId::subdetId().

Referenced by disconnectedModule(), getLinksInModule(), getModuleFromTriggerCell(), getModuleSize(), getOrderedTriggerCellsFromModule(), getTriggerCellsFromModule(), and triggerLayer().

630  {
631  unsigned det = DetId(id).det();
632  unsigned layer = 0;
633  if (det == DetId::HGCalTrigger) {
634  unsigned subdet = HGCalTriggerDetId(id).subdet();
636  layer = HGCalTriggerDetId(id).layer();
637  } else if (subdet == HGCalTriggerSubdetector::HGCalHSiTrigger) {
638  layer = heOffset_ + HGCalTriggerDetId(id).layer();
639  }
640  } else if (det == DetId::HGCalHSc) {
641  layer = heOffset_ + HGCScintillatorDetId(id).layer();
642  } else if (det == DetId::Forward) {
643  unsigned subdet = HGCalDetId(id).subdetId();
644  if (subdet == ForwardSubdetector::HGCEE) {
645  layer = HGCalDetId(id).layer();
646  } else if (subdet == ForwardSubdetector::HGCHEF || subdet == ForwardSubdetector::HGCHEB) {
647  layer = heOffset_ + HGCalDetId(id).layer();
648  }
649  }
650  return layer;
651 }
HGCalTriggerSubdetector subdet() const
get the subdetector
int layer() const
get the layer #
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
int layer() const
get the layer #
int layer() const
get the layer #
Definition: HGCalDetId.h:46
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
unsigned HGCalTriggerGeometryV9Imp2::packLayerModuleId ( unsigned  layer,
unsigned  wafer 
) const
private

Definition at line 538 of file HGCalTriggerGeometryV9Imp2.cc.

References heOffset_, HGCEE, HGCHEF, HGCalDetId::kHGCalLayerMask, HGCalDetId::kHGCalLayerOffset, HGCalDetId::kHGCalWaferMask, HGCalDetId::kHGCalWaferOffset, DetId::kSubdetMask, and DetId::kSubdetOffset.

Referenced by fillMaps(), getLinksInModule(), getModuleSize(), getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

538  {
539  unsigned packed_value = 0;
540  unsigned subdet = ForwardSubdetector::HGCEE;
541  if (layer > heOffset_) {
542  layer -= heOffset_;
544  }
545  packed_value |= ((layer & HGCalDetId::kHGCalLayerMask) << HGCalDetId::kHGCalLayerOffset);
547  packed_value |= ((subdet & DetId::kSubdetMask) << DetId::kSubdetOffset);
548  return packed_value;
549 }
static const int kHGCalLayerOffset
Definition: HGCalDetId.h:16
static const int kHGCalLayerMask
Definition: HGCalDetId.h:17
static const int kSubdetOffset
Definition: DetId.h:22
static const int kSubdetMask
Definition: DetId.h:20
static const int kHGCalWaferOffset
Definition: HGCalDetId.h:12
Definition: vlib.h:198
static const int kHGCalWaferMask
Definition: HGCalDetId.h:13
unsigned HGCalTriggerGeometryV9Imp2::packLayerWaferId ( unsigned  layer,
int  waferU,
int  waferV 
) const
private

Definition at line 520 of file HGCalTriggerGeometryV9Imp2.cc.

References funct::abs(), heOffset_, HGCEE, HGCHEF, HGCSiliconDetId::kHGCalLayerMask, HGCSiliconDetId::kHGCalLayerOffset, HGCSiliconDetId::kHGCalWaferUMask, HGCSiliconDetId::kHGCalWaferUOffset, HGCSiliconDetId::kHGCalWaferUSignMask, HGCSiliconDetId::kHGCalWaferUSignOffset, HGCSiliconDetId::kHGCalWaferVMask, HGCSiliconDetId::kHGCalWaferVOffset, HGCSiliconDetId::kHGCalWaferVSignMask, HGCSiliconDetId::kHGCalWaferVSignOffset, DetId::kSubdetMask, and DetId::kSubdetOffset.

Referenced by fillMaps(), and getModuleFromTriggerCell().

520  {
521  unsigned packed_value = 0;
522  unsigned subdet = ForwardSubdetector::HGCEE;
523  if (layer > heOffset_) {
524  layer -= heOffset_;
526  }
527  unsigned waferUsign = (waferU >= 0) ? 0 : 1;
528  unsigned waferVsign = (waferV >= 0) ? 0 : 1;
534  packed_value |= ((subdet & DetId::kSubdetMask) << DetId::kSubdetOffset);
535  return packed_value;
536 }
static const int kHGCalWaferVOffset
static const int kHGCalWaferVSignOffset
static const int kSubdetOffset
Definition: DetId.h:22
static const int kSubdetMask
Definition: DetId.h:20
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int kHGCalLayerMask
static const int kHGCalWaferVMask
static const int kHGCalWaferUSignMask
static const int kHGCalWaferUMask
static const int kHGCalWaferVSignMask
static const int kHGCalLayerOffset
static const int kHGCalWaferUOffset
static const int kHGCalWaferUSignOffset
unsigned HGCalTriggerGeometryV9Imp2::packWaferId ( int  waferU,
int  waferV 
) const
private

Definition at line 509 of file HGCalTriggerGeometryV9Imp2.cc.

References funct::abs(), HGCSiliconDetId::kHGCalWaferUMask, HGCSiliconDetId::kHGCalWaferUOffset, HGCSiliconDetId::kHGCalWaferUSignMask, HGCSiliconDetId::kHGCalWaferUSignOffset, HGCSiliconDetId::kHGCalWaferVMask, HGCSiliconDetId::kHGCalWaferVOffset, HGCSiliconDetId::kHGCalWaferVSignMask, and HGCSiliconDetId::kHGCalWaferVSignOffset.

Referenced by fillMaps().

509  {
510  unsigned packed_value = 0;
511  unsigned waferUsign = (waferU >= 0) ? 0 : 1;
512  unsigned waferVsign = (waferV >= 0) ? 0 : 1;
517  return packed_value;
518 }
static const int kHGCalWaferVOffset
static const int kHGCalWaferVSignOffset
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static const int kHGCalWaferVMask
static const int kHGCalWaferUSignMask
static const int kHGCalWaferUMask
static const int kHGCalWaferVSignMask
static const int kHGCalWaferUOffset
static const int kHGCalWaferUSignOffset
void HGCalTriggerGeometryV9Imp2::reset ( void  )
finalvirtual

Reimplemented from HGCalTriggerGeometryBase.

Definition at line 104 of file HGCalTriggerGeometryV9Imp2.cc.

References module_to_wafers_, and wafer_to_module_.

104  {
105  wafer_to_module_.clear();
106  module_to_wafers_.clear();
107 }
std::unordered_map< unsigned, unsigned > wafer_to_module_
std::unordered_multimap< unsigned, unsigned > module_to_wafers_
unsigned HGCalTriggerGeometryV9Imp2::triggerLayer ( const unsigned  id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 573 of file HGCalTriggerGeometryV9Imp2.cc.

References layerWithOffset(), and trigger_layers_.

Referenced by lastTriggerLayer().

573  {
574  unsigned layer = layerWithOffset(id);
575  if (layer >= trigger_layers_.size())
576  return 0;
577  return trigger_layers_[layer];
578 }
std::vector< unsigned > trigger_layers_
unsigned layerWithOffset(unsigned) const
void HGCalTriggerGeometryV9Imp2::unpackWaferId ( unsigned  wafer,
int &  waferU,
int &  waferV 
) const
private

Definition at line 551 of file HGCalTriggerGeometryV9Imp2.cc.

References HGCSiliconDetId::kHGCalWaferUMask, HGCSiliconDetId::kHGCalWaferUOffset, HGCSiliconDetId::kHGCalWaferUSignMask, HGCSiliconDetId::kHGCalWaferUSignOffset, HGCSiliconDetId::kHGCalWaferVMask, HGCSiliconDetId::kHGCalWaferVOffset, HGCSiliconDetId::kHGCalWaferVSignMask, and HGCSiliconDetId::kHGCalWaferVSignOffset.

Referenced by getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

551  {
555  : waferUAbs);
557  : waferVAbs);
558 }
static const int kHGCalWaferVOffset
static const int kHGCalWaferVSignOffset
static const int kHGCalWaferVMask
static const int kHGCalWaferUSignMask
static const int kHGCalWaferUMask
static const int kHGCalWaferVSignMask
static const int kHGCalWaferUOffset
static const int kHGCalWaferUSignOffset
bool HGCalTriggerGeometryV9Imp2::validCellId ( unsigned  det,
unsigned  cell_id 
) const
private

Definition at line 596 of file HGCalTriggerGeometryV9Imp2.cc.

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

Referenced by getCellsFromTriggerCell(), and validTriggerCellFromCells().

596  {
597  bool is_valid = false;
598  switch (subdet) {
599  case DetId::HGCalEE:
600  is_valid = eeTopology().valid(cell_id);
601  break;
602  case DetId::HGCalHSi:
603  is_valid = hsiTopology().valid(cell_id);
604  break;
605  case DetId::HGCalHSc:
606  is_valid = hscTopology().valid(cell_id);
607  break;
608  default:
609  is_valid = false;
610  break;
611  }
612  return is_valid;
613 }
bool is_valid(const Digi &d)
Definition: GenericDigi.h:64
const HGCalTopology & eeTopology() const
const HGCalTopology & hsiTopology() const
const HGCalTopology & hscTopology() const
bool valid(const DetId &id) const override
Is this a valid cell id.
bool HGCalTriggerGeometryV9Imp2::validTriggerCell ( const unsigned  trigger_cell_id) const
finalvirtual

Implements HGCalTriggerGeometryBase.

Definition at line 560 of file HGCalTriggerGeometryV9Imp2.cc.

References validTriggerCellFromCells().

560  {
561  return validTriggerCellFromCells(trigger_cell_id);
562 }
bool validTriggerCellFromCells(const unsigned) const
bool HGCalTriggerGeometryV9Imp2::validTriggerCellFromCells ( const unsigned  trigger_cell_id) const
private

Definition at line 580 of file HGCalTriggerGeometryV9Imp2.cc.

References postprocess-scan-build::cells, DetId::det(), getCellsFromTriggerCell(), matching::is_valid(), and validCellId().

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

580  {
581  // Check the validity of a trigger cell with the
582  // validity of the cells. One valid cell in the
583  // trigger cell is enough to make the trigger cell
584  // valid.
585  const geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
586  bool is_valid = false;
587  for (const auto cell_id : cells) {
588  unsigned det = DetId(cell_id).det();
589  is_valid |= validCellId(det, cell_id);
590  if (is_valid)
591  break;
592  }
593  return is_valid;
594 }
bool validCellId(unsigned det, unsigned cell_id) const
bool is_valid(const Digi &d)
Definition: GenericDigi.h:64
geom_set getCellsFromTriggerCell(const unsigned) const final
Definition: DetId.h:17
std::unordered_set< unsigned > geom_set
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46

Member Data Documentation

std::unordered_set<unsigned> HGCalTriggerGeometryV9Imp2::disconnected_layers_
private
std::unordered_set<unsigned> HGCalTriggerGeometryV9Imp2::disconnected_modules_
private

Definition at line 64 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by disconnectedModule(), and HGCalTriggerGeometryV9Imp2().

unsigned HGCalTriggerGeometryV9Imp2::heOffset_ = 0
private
unsigned HGCalTriggerGeometryV9Imp2::hSc_links_per_module_ = 1
private

Definition at line 52 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by getLinksInModule().

unsigned HGCalTriggerGeometryV9Imp2::hSc_module_size_ = 12
private
unsigned HGCalTriggerGeometryV9Imp2::hSc_triggercell_size_ = 2
private
unsigned HGCalTriggerGeometryV9Imp2::hSc_wafers_per_module_ = 3
private

Definition at line 53 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by getModuleSize(), and HGCalTriggerGeometryV9Imp2().

edm::FileInPath HGCalTriggerGeometryV9Imp2::l1tLinksMapping_
private

Definition at line 56 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by fillMaps().

edm::FileInPath HGCalTriggerGeometryV9Imp2::l1tModulesMapping_
private

Definition at line 55 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by fillMaps().

unsigned HGCalTriggerGeometryV9Imp2::last_trigger_layer_ = 0
private

Definition at line 67 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by initialize(), and lastTriggerLayer().

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

Definition at line 61 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by fillMaps(), and getLinksInModule().

std::unordered_multimap<unsigned, unsigned> HGCalTriggerGeometryV9Imp2::module_to_wafers_
private
unsigned HGCalTriggerGeometryV9Imp2::totalLayers_ = 0
private

Definition at line 71 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by initialize().

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

Definition at line 66 of file HGCalTriggerGeometryV9Imp2.cc.

Referenced by initialize(), and triggerLayer().

std::unordered_map<unsigned, unsigned> HGCalTriggerGeometryV9Imp2::wafer_to_module_
private

Definition at line 59 of file HGCalTriggerGeometryV9Imp2.cc.

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