CMS 3D CMS Logo

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

Public Member Functions

virtual geom_set getCellsFromModule (const unsigned) const override final
 
virtual geom_set getCellsFromTriggerCell (const unsigned) const override final
 
virtual unsigned getModuleFromCell (const unsigned) const override final
 
virtual unsigned getModuleFromTriggerCell (const unsigned) const override final
 
virtual GlobalPoint getModulePosition (const unsigned) const override final
 
virtual geom_set getNeighborsFromTriggerCell (const unsigned) const override final
 
virtual geom_ordered_set getOrderedCellsFromModule (const unsigned) const override final
 
virtual geom_ordered_set getOrderedTriggerCellsFromModule (const unsigned) const override final
 
virtual unsigned getTriggerCellFromCell (const unsigned) const override final
 
virtual GlobalPoint getTriggerCellPosition (const unsigned) const override final
 
virtual geom_set getTriggerCellsFromModule (const unsigned) const override final
 
 HGCalTriggerGeometryHexImp2 (const edm::ParameterSet &conf)
 
virtual void initialize (const es_info &) override final
 
virtual void reset () override final
 
virtual bool validTriggerCell (const unsigned) const override final
 
- Public Member Functions inherited from HGCalTriggerGeometryBase
const std::string & bhSDName () const
 
const std::string & eeSDName () const
 
const std::string & fhSDName () const
 
 HGCalTriggerGeometryBase (const edm::ParameterSet &conf)
 
virtual void initialize (const es_info &)=0
 
const std::string & name () const
 
virtual ~HGCalTriggerGeometryBase ()
 

Private Member Functions

int detIdWaferType (unsigned subdet, short wafer) const
 
void fillMaps (const es_info &)
 
void fillNeighborMaps (const es_info &)
 
unsigned packTriggerCell (unsigned, const std::vector< int > &) const
 
bool validCellId (unsigned subdet, unsigned cell_id) const
 

Private Attributes

std::map< std::pair< short, short >, short > cells_to_trigger_cells_
 
es_info es_info_
 
edm::FileInPath l1tCellNeighborsMapping_
 
edm::FileInPath l1tCellsMapping_
 
edm::FileInPath l1tModulesMapping_
 
edm::FileInPath l1tWaferNeighborsMapping_
 
std::unordered_multimap< short, short > module_to_wafers_ee_
 
std::unordered_multimap< short, short > module_to_wafers_fh_
 
std::unordered_map< short, short > number_cells_in_wafers_
 
std::unordered_map< short, short > number_trigger_cells_in_wafers_
 
std::unordered_map< int, std::set< std::pair< short, short > > > trigger_cell_neighbors_
 
std::multimap< std::pair< short, short >, short > trigger_cells_to_cells_
 
std::unordered_map< short, std::vector< short > > wafer_neighbors_ee_
 
std::unordered_map< short, std::vector< short > > wafer_neighbors_fh_
 
std::unordered_map< short, short > wafer_to_module_ee_
 
std::unordered_map< short, short > wafer_to_module_fh_
 

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
 

Detailed Description

Definition at line 13 of file HGCalTriggerGeometryHexImp2.cc.

Constructor & Destructor Documentation

HGCalTriggerGeometryHexImp2::HGCalTriggerGeometryHexImp2 ( const edm::ParameterSet conf)

Definition at line 84 of file HGCalTriggerGeometryHexImp2.cc.

References reset().

84  :
86  l1tCellsMapping_(conf.getParameter<edm::FileInPath>("L1TCellsMapping")),
87  l1tCellNeighborsMapping_(conf.getParameter<edm::FileInPath>("L1TCellNeighborsMapping")),
88  l1tWaferNeighborsMapping_(conf.getParameter<edm::FileInPath>("L1TWaferNeighborsMapping")),
89  l1tModulesMapping_(conf.getParameter<edm::FileInPath>("L1TModulesMapping"))
90 {
91 }
HGCalTriggerGeometryBase(const edm::ParameterSet &conf)
T getParameter(std::string const &) const

Member Function Documentation

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

Definition at line 668 of file HGCalTriggerGeometryHexImp2.cc.

References HGCalTopology::dddConstants(), es_info_, HGCEE, HGCHEF, HGCalTriggerGeometryBase::es_info::topo_ee, HGCalTriggerGeometryBase::es_info::topo_fh, validTriggerCell(), and HGCalDDDConstants::waferTypeT().

Referenced by fillMaps(), getCellsFromModule(), getNeighborsFromTriggerCell(), getOrderedCellsFromModule(), getOrderedTriggerCellsFromModule(), getTriggerCellsFromModule(), and packTriggerCell().

669 {
670  int wafer_type = 0;
671  switch(subdet)
672  {
673  // HGCalDDDConstants::waferTypeT() returns 2=coarse, 1=fine
674  // HGCalDetId::waferType() returns -1=coarse, 1=fine
675  // Convert to HGCalDetId waferType
677  wafer_type = (es_info_.topo_ee->dddConstants().waferTypeT(wafer)==2?-1:1);
678  break;
680  wafer_type = (es_info_.topo_fh->dddConstants().waferTypeT(wafer)==2?-1:1);
681  break;
682  default:
683  break;
684  };
685  return wafer_type;
686 }
edm::ESHandle< HGCalTopology > topo_ee
edm::ESHandle< HGCalTopology > topo_fh
const HGCalDDDConstants & dddConstants() const
int waferTypeT(int wafer) const
void HGCalTriggerGeometryHexImp2::fillMaps ( const es_info &  esInfo)
private

Definition at line 483 of file HGCalTriggerGeometryHexImp2.cc.

References cells_to_trigger_cells_, detIdWaferType(), fillNeighborMaps(), edm::FileInPath::fullPath(), HGCEE, HGCHEF, l1tCellsMapping_, l1tModulesMapping_, python.rootplot.argparse::module, module_to_wafers_ee_, module_to_wafers_fh_, number_cells_in_wafers_, number_trigger_cells_in_wafers_, trigger_cells_to_cells_, wafer_to_module_ee_, and wafer_to_module_fh_.

Referenced by getModulePosition(), and initialize().

484 {
485  //
486  // read module mapping file
487  std::ifstream l1tModulesMappingStream(l1tModulesMapping_.fullPath());
488  if(!l1tModulesMappingStream.is_open()) edm::LogError("HGCalTriggerGeometry") << "Cannot open L1TModulesMapping file\n";
489  short subdet = 0;
490  short wafer = 0;
491  short module = 0;
492  for(; l1tModulesMappingStream>>subdet>>wafer>>module; )
493  {
494  int wafer_type = detIdWaferType(subdet, wafer);
495  switch(subdet)
496  {
498  {
499  // fill module <-> wafers mappings
500  wafer_to_module_ee_.emplace(wafer,module);
501  module_to_wafers_ee_.emplace(module, wafer);
502  // fill number of cells for a given wafer type
503  number_cells_in_wafers_.emplace(wafer_type, esInfo.topo_ee->dddConstants().numberCellsHexagon(wafer));
504  break;
505  }
507  {
508  // fill module <-> wafers mappings
509  wafer_to_module_fh_.emplace(wafer,module);
510  module_to_wafers_fh_.emplace(module, wafer);
511  // fill number of cells for a given wafer type
512  number_cells_in_wafers_.emplace(wafer_type, esInfo.topo_fh->dddConstants().numberCellsHexagon(wafer));
513  break;
514  }
515  default:
516  edm::LogWarning("HGCalTriggerGeometry") << "Unsupported subdetector number ("<<subdet<<") in L1TModulesMapping file\n";
517  break;
518  }
519  }
520  if(!l1tModulesMappingStream.eof()) edm::LogWarning("HGCalTriggerGeometry") << "Error reading L1TModulesMapping '"<<wafer<<" "<<module<<"' \n";
521  l1tModulesMappingStream.close();
522  // read trigger cell mapping file
523  std::ifstream l1tCellsMappingStream(l1tCellsMapping_.fullPath());
524  if(!l1tCellsMappingStream.is_open()) edm::LogError("HGCalTriggerGeometry") << "Cannot open L1TCellsMapping file\n";
525  short waferType = 0;
526  short cell = 0;
527  short triggerCell = 0;
528  for(; l1tCellsMappingStream>>waferType>>cell>>triggerCell; )
529  {
530  // fill cell <-> trigger cell mappings
531  cells_to_trigger_cells_.emplace(std::make_pair((waferType?1:-1),cell), triggerCell);
532  trigger_cells_to_cells_.emplace(std::make_pair((waferType?1:-1),triggerCell), cell);
533  // fill number of cells for a given wafer type
534  auto itr_insert = number_trigger_cells_in_wafers_.emplace((waferType?1:-1), 0);
535  if(triggerCell+1 > itr_insert.first->second) itr_insert.first->second = triggerCell+1;
536  }
537  if(!l1tCellsMappingStream.eof()) edm::LogWarning("HGCalTriggerGeometry") << "Error reading L1TCellsMapping'"<<waferType<<" "<<cell<<" "<<triggerCell<<"' \n";
538  l1tCellsMappingStream.close();
539 }
std::unordered_map< short, short > number_cells_in_wafers_
std::unordered_map< short, short > number_trigger_cells_in_wafers_
std::unordered_multimap< short, short > module_to_wafers_fh_
std::unordered_multimap< short, short > module_to_wafers_ee_
std::unordered_map< short, short > wafer_to_module_ee_
std::unordered_map< short, short > wafer_to_module_fh_
int detIdWaferType(unsigned subdet, short wafer) const
std::map< std::pair< short, short >, short > cells_to_trigger_cells_
std::string fullPath() const
Definition: FileInPath.cc:184
std::multimap< std::pair< short, short >, short > trigger_cells_to_cells_
Definition: vlib.h:208
void HGCalTriggerGeometryHexImp2::fillNeighborMaps ( const es_info &  esInfo)
private

Definition at line 543 of file HGCalTriggerGeometryHexImp2.cc.

References begin, EnergyCorrector::c, csvReporter::delimiter, end, Exception, edm::FileInPath::fullPath(), HGCEE, HGCHEF, l1tCellNeighborsMapping_, l1tWaferNeighborsMapping_, geometryCSVtoXML::line, neighbor(), packTriggerCell(), findQualityFiles::size, AlCaHLTBitMon_QueryRunRegistry::string, trigger_cell_neighbors_, wafer_neighbors_ee_, and wafer_neighbors_fh_.

Referenced by fillMaps(), and initialize().

544 {
545  // Fill trigger neighbor map
546  std::ifstream l1tCellNeighborsMappingStream(l1tCellNeighborsMapping_.fullPath());
547  if(!l1tCellNeighborsMappingStream.is_open()) edm::LogError("HGCalTriggerGeometry") << "Cannot open L1TCellNeighborsMapping file\n";
548  for(std::array<char,512> buffer; l1tCellNeighborsMappingStream.getline(&buffer[0], 512); )
549  {
550  std::string line(&buffer[0]);
551  // Extract keys consisting of the wafer configuration
552  // and of the trigger cell id
553  // Match patterns (X,Y)
554  // where X is a set of 7 bits
555  // and Y is a number with less than 4 digits
556  std::regex key_regex("\\(\\s*[01]{7}\\s*,\\s*\\d{1,3}\\s*\\)");
557  std::vector<std::string> key_tokens {
558  std::sregex_token_iterator(line.begin(), line.end(), key_regex), {}
559  };
560  if(key_tokens.size()!=1)
561  {
562  throw cms::Exception("BadGeometry")
563  << "Syntax error in the L1TCellNeighborsMapping:\n"
564  << " Cannot find the trigger cell key in line:\n"
565  << " '"<<&buffer[0]<<"'\n";
566  }
567  std::regex digits_regex("([01]{7})|(\\d{1,3})");
568  std::vector<std::string> type_tc {
569  std::sregex_token_iterator(key_tokens[0].begin(), key_tokens[0].end(), digits_regex), {}
570  };
571  // get cell id and wafer configuration
572  int trigger_cell = std::stoi(type_tc[1]);
573  std::vector<int> wafer_types;
574  wafer_types.reserve(type_tc[0].size());
575  // Convert waferType coarse=0, fine=1 to coarse=-1, fine=1
576  for(const char c : type_tc[0]) wafer_types.emplace_back( (std::stoi(std::string(&c))?1:-1) );
577  unsigned map_key = packTriggerCell(trigger_cell, wafer_types);
578  // Extract neighbors
579  // Match patterns (X,Y)
580  // where X is a number with less than 4 digits
581  // and Y is one single digit (the neighbor wafer, between 0 and 6)
582  std::regex neighbors_regex("\\(\\s*\\d{1,3}\\s*,\\s*\\d\\s*\\)");
583  std::vector<std::string> neighbors_tokens {
584  std::sregex_token_iterator(line.begin(), line.end(), neighbors_regex), {}
585  };
586  if(neighbors_tokens.size()==0)
587  {
588  throw cms::Exception("BadGeometry")
589  << "Syntax error in the L1TCellNeighborsMapping:\n"
590  << " Cannot find any neighbor in line:\n"
591  << " '"<<&buffer[0]<<"'\n";
592  }
593  auto itr_insert = trigger_cell_neighbors_.emplace(map_key, std::set<std::pair<short,short>>());
594  for(const auto& neighbor : neighbors_tokens)
595  {
596  std::vector<std::string> pair_neighbor {
597  std::sregex_token_iterator(neighbor.begin(), neighbor.end(), digits_regex), {}
598  };
599  short neighbor_wafer(std::stoi(pair_neighbor[1]));
600  short neighbor_cell(std::stoi(pair_neighbor[0]));
601  itr_insert.first->second.emplace(neighbor_wafer, neighbor_cell);
602  }
603  }
604  if(!l1tCellNeighborsMappingStream.eof()) edm::LogWarning("HGCalTriggerGeometry") << "Error reading L1TCellNeighborsMapping'\n";
605  l1tCellNeighborsMappingStream.close();
606 
607  // Fill wafer neighbor map
608  std::ifstream l1tWaferNeighborsMappingStream(l1tWaferNeighborsMapping_.fullPath());
609  if(!l1tWaferNeighborsMappingStream.is_open()) edm::LogError("HGCalTriggerGeometry") << "Cannot open L1TWaferNeighborsMapping file\n";
610  for(std::array<char,512> buffer; l1tWaferNeighborsMappingStream.getline(&buffer[0], 512); )
611  {
612  std::string line(&buffer[0]);
613  // split line using spaces as delimiter
614  std::regex delimiter("\\s+");
615  std::vector<std::string> tokens {
616  std::sregex_token_iterator(line.begin(), line.end(), delimiter, -1), {}
617  };
618  if(tokens.size()!=8)
619  {
620  throw cms::Exception("BadGeometry")
621  << "Syntax error in the L1TWaferNeighborsMapping in line:\n"
622  << " '"<<&buffer[0]<<"'\n"
623  << " A line should be composed of 8 integers separated by spaces:\n"
624  << " subdet waferid neighbor1 neighbor2 neighbor3 neighbor4 neighbor5 neighbor6\n";
625  }
626  short subdet(std::stoi(tokens[0]));
627  short wafer(std::stoi(tokens[1]));
628 
629  std::unordered_map<short, std::vector<short>>* wafer_neighbors;
630  switch(subdet)
631  {
633  wafer_neighbors = &wafer_neighbors_ee_;
634  break;
636  wafer_neighbors = &wafer_neighbors_fh_;
637  break;
638  default:
639  throw cms::Exception("BadGeometry")
640  << "Unknown subdet " << subdet << " in L1TWaferNeighborsMapping:\n"
641  << " '"<<&buffer[0]<<"'\n";
642  };
643  auto wafer_itr = wafer_neighbors->emplace(wafer, std::vector<short>());
644  for(auto neighbor_itr=tokens.cbegin()+2; neighbor_itr!=tokens.cend(); ++neighbor_itr)
645  {
646  wafer_itr.first->second.emplace_back(std::stoi(*neighbor_itr));
647  }
648  }
649 }
size
Write out results.
unsigned packTriggerCell(unsigned, const std::vector< int > &) const
bool neighbor(int endcap, int sector, int SectIndex, int id, int sub, int station)
std::unordered_map< short, std::vector< short > > wafer_neighbors_fh_
std::unordered_map< short, std::vector< short > > wafer_neighbors_ee_
#define end
Definition: vmac.h:37
#define begin
Definition: vmac.h:30
std::unordered_map< int, std::set< std::pair< short, short > > > trigger_cell_neighbors_
std::string fullPath() const
Definition: FileInPath.cc:184
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexImp2::getCellsFromModule ( const unsigned  module_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 221 of file HGCalTriggerGeometryHexImp2.cc.

References detIdWaferType(), getOrderedCellsFromModule(), HGCEE, HGCHEF, HGCalDetId::layer(), module_to_wafers_ee_, module_to_wafers_fh_, number_cells_in_wafers_, DetId::subdetId(), validCellId(), HGCalDetId::wafer(), HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getCellsFromTriggerCell(), and getModulePosition().

222 {
223 
224  HGCalDetId module_det_id(module_id);
225  unsigned module = module_det_id.wafer();
226  unsigned subdet = module_det_id.subdetId();
227  std::pair<std::unordered_multimap<short, short>::const_iterator,
228  std::unordered_multimap<short, short>::const_iterator> wafer_itrs;
229  switch(subdet)
230  {
232  wafer_itrs = module_to_wafers_ee_.equal_range(module);
233  break;
235  wafer_itrs = module_to_wafers_fh_.equal_range(module);
236  break;
237  default:
238  edm::LogError("HGCalTriggerGeometry") << "Unknown module->wafers mapping for subdet "<<subdet<<"\n";
239  return geom_set();
240  };
241  geom_set cell_det_ids;
242  for(auto wafer_itr=wafer_itrs.first; wafer_itr!=wafer_itrs.second; wafer_itr++)
243  {
244  int wafer_type = detIdWaferType(subdet, wafer_itr->second);
245  if(wafer_type==0) wafer_type = module_det_id.waferType();
246  // loop on the cells in each wafer and return valid ones
247  for(int cell=0; cell<number_cells_in_wafers_.at(wafer_type); cell++)
248  {
249  HGCalDetId cell_id((ForwardSubdetector)module_det_id.subdetId(), module_det_id.zside(), module_det_id.layer(), wafer_type, wafer_itr->second, cell);
250  if(validCellId(subdet, cell_id)) cell_det_ids.emplace(cell_id.rawId());
251  }
252  }
253  return cell_det_ids;
254 }
std::unordered_map< short, short > number_cells_in_wafers_
std::unordered_multimap< short, short > module_to_wafers_fh_
ForwardSubdetector
bool validCellId(unsigned subdet, unsigned cell_id) const
std::unordered_multimap< short, short > module_to_wafers_ee_
std::unordered_set< unsigned > geom_set
int detIdWaferType(unsigned subdet, short wafer) const
Definition: vlib.h:208
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexImp2::getCellsFromTriggerCell ( const unsigned  trigger_cell_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 204 of file HGCalTriggerGeometryHexImp2.cc.

References HGCalDetId::cell(), getCellsFromModule(), HGCalDetId::layer(), DetId::subdetId(), trigger_cells_to_cells_, HGCalDetId::wafer(), HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getModuleFromTriggerCell(), getTriggerCellPosition(), and validTriggerCell().

205 {
206  HGCalDetId trigger_cell_det_id(trigger_cell_id);
207  int wafer_type = trigger_cell_det_id.waferType();
208  unsigned trigger_cell = trigger_cell_det_id.cell();
209  // FIXME: better way to do this TC->cell mapping?
210  const auto& cell_range = trigger_cells_to_cells_.equal_range(std::make_pair(wafer_type,trigger_cell));
211  geom_set cell_det_ids;
212  for(auto tc_c_itr=cell_range.first; tc_c_itr!=cell_range.second; tc_c_itr++)
213  {
214  cell_det_ids.emplace(HGCalDetId((ForwardSubdetector)trigger_cell_det_id.subdetId(), trigger_cell_det_id.zside(), trigger_cell_det_id.layer(), trigger_cell_det_id.waferType(), trigger_cell_det_id.wafer(), tc_c_itr->second).rawId());
215  }
216  return cell_det_ids;
217 }
ForwardSubdetector
std::unordered_set< unsigned > geom_set
std::multimap< std::pair< short, short >, short > trigger_cells_to_cells_
unsigned HGCalTriggerGeometryHexImp2::getModuleFromCell ( const unsigned  cell_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 138 of file HGCalTriggerGeometryHexImp2.cc.

References Exception, getModuleFromTriggerCell(), HGCEE, HGCHEF, HGCalDetId::kHGCalCellMask, HGCalDetId::layer(), python.rootplot.argparse::module, DetId::subdetId(), HGCalDetId::wafer(), wafer_to_module_ee_, wafer_to_module_fh_, HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getTriggerCellFromCell().

139 {
140  HGCalDetId cell_det_id(cell_id);
141  unsigned wafer = cell_det_id.wafer();
142  unsigned subdet = cell_det_id.subdetId();
143  std::unordered_map<short, short>::const_iterator module_itr;
144  bool out_of_range_error = false;
145  switch(subdet)
146  {
148  module_itr = wafer_to_module_ee_.find(wafer);
149  if(module_itr==wafer_to_module_ee_.end()) out_of_range_error = true;
150  break;
152  module_itr = wafer_to_module_fh_.find(wafer);
153  if(module_itr==wafer_to_module_fh_.end()) out_of_range_error = true;
154  break;
155  default:
156  edm::LogError("HGCalTriggerGeometry") << "Unknown wafer->module mapping for subdet "<<subdet<<"\n";
157  return 0;
158  };
159  if(out_of_range_error)
160  {
161  throw cms::Exception("BadGeometry")
162  << "HGCalTriggerGeometry: Wafer " << wafer << " is not mapped to any trigger module for subdetector " << subdet
163  << ". The module mapping should be modified. See https://twiki.cern.ch/twiki/bin/viewauth/CMS/HGCALTriggerPrimitivesSimulation#Trigger_geometry for details.\n";
164  }
165  unsigned module = module_itr->second;
166  return HGCalDetId((ForwardSubdetector)cell_det_id.subdetId(), cell_det_id.zside(), cell_det_id.layer(), cell_det_id.waferType(), module, HGCalDetId::kHGCalCellMask).rawId();
167 }
ForwardSubdetector
static const int kHGCalCellMask
Definition: HGCalDetId.h:13
std::unordered_map< short, short > wafer_to_module_ee_
std::unordered_map< short, short > wafer_to_module_fh_
Definition: vlib.h:208
unsigned HGCalTriggerGeometryHexImp2::getModuleFromTriggerCell ( const unsigned  trigger_cell_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 171 of file HGCalTriggerGeometryHexImp2.cc.

References Exception, getCellsFromTriggerCell(), HGCEE, HGCHEF, HGCalDetId::kHGCalCellMask, HGCalDetId::layer(), python.rootplot.argparse::module, DetId::subdetId(), HGCalDetId::wafer(), wafer_to_module_ee_, wafer_to_module_fh_, HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getModuleFromCell().

172 {
173  HGCalDetId trigger_cell_det_id(trigger_cell_id);
174  unsigned wafer = trigger_cell_det_id.wafer();
175  unsigned subdet = trigger_cell_det_id.subdetId();
176  std::unordered_map<short, short>::const_iterator module_itr;
177  bool out_of_range_error = false;
178  switch(subdet)
179  {
181  module_itr = wafer_to_module_ee_.find(wafer);
182  if(module_itr==wafer_to_module_ee_.end()) out_of_range_error = true;
183  break;
185  module_itr = wafer_to_module_fh_.find(wafer);
186  if(module_itr==wafer_to_module_fh_.end()) out_of_range_error = true;
187  break;
188  default:
189  edm::LogError("HGCalTriggerGeometry") << "Unknown wafer->module mapping for subdet "<<subdet<<"\n";
190  return 0;
191  };
192  if(out_of_range_error)
193  {
194  throw cms::Exception("BadGeometry")
195  << "HGCalTriggerGeometry: Wafer " << wafer << " is not mapped to any trigger module for subdetector " << subdet
196  << ". The module mapping should be modified. See https://twiki.cern.ch/twiki/bin/viewauth/CMS/HGCALTriggerPrimitivesSimulation#Trigger_geometry for details.\n";
197  }
198  unsigned module = module_itr->second;
199  return HGCalDetId((ForwardSubdetector)trigger_cell_det_id.subdetId(), trigger_cell_det_id.zside(), trigger_cell_det_id.layer(), trigger_cell_det_id.waferType(), module, HGCalDetId::kHGCalCellMask).rawId();
200 }
ForwardSubdetector
static const int kHGCalCellMask
Definition: HGCalDetId.h:13
std::unordered_map< short, short > wafer_to_module_ee_
std::unordered_map< short, short > wafer_to_module_fh_
Definition: vlib.h:208
GlobalPoint HGCalTriggerGeometryHexImp2::getModulePosition ( const unsigned  module_det_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 467 of file HGCalTriggerGeometryHexImp2.cc.

References es_info_, fillMaps(), HGCalTriggerGeometryBase::es_info::geom_ee, HGCalTriggerGeometryBase::es_info::geom_fh, getCellsFromModule(), HGCalGeometry::getPosition(), HGCEE, and DetId::subdetId().

Referenced by getTriggerCellPosition().

468 {
469  // Position: barycenter of the module.
470  Basic3DVector<float> moduleVector(0.,0.,0.);
471  const auto cell_ids = getCellsFromModule(module_det_id);
472  for(const auto& cell : cell_ids)
473  {
474  HGCalDetId cellDetId(cell);
475  moduleVector += (cellDetId.subdetId()==ForwardSubdetector::HGCEE ? es_info_.geom_ee->getPosition(cellDetId) : es_info_.geom_fh->getPosition(cellDetId)).basicVector();
476  }
477  return GlobalPoint( moduleVector/cell_ids.size() );
478 }
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
GlobalPoint getPosition(const DetId &id) const
edm::ESHandle< HGCalGeometry > geom_ee
edm::ESHandle< HGCalGeometry > geom_fh
virtual geom_set getCellsFromModule(const unsigned) const override final
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexImp2::getNeighborsFromTriggerCell ( const unsigned  trigger_cell_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 370 of file HGCalTriggerGeometryHexImp2.cc.

References HGCalDetId::cell(), detIdWaferType(), Exception, getTriggerCellPosition(), HGCEE, HGCHEF, HGCalDetId::layer(), packTriggerCell(), DetId::subdetId(), trigger_cell_neighbors_, cutBasedMuonId_MuonPOG_V0_cff::types, validTriggerCell(), w, HGCalDetId::wafer(), wafer_neighbors_ee_, wafer_neighbors_fh_, HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getOrderedTriggerCellsFromModule().

371 {
372  HGCalDetId trigger_cell_det_id(trigger_cell_id);
373  unsigned wafer = trigger_cell_det_id.wafer();
374  int wafer_type = trigger_cell_det_id.waferType();
375  unsigned subdet = trigger_cell_det_id.subdetId();
376  unsigned trigger_cell = trigger_cell_det_id.cell();
377  // Retrieve surrounding wafers (around the wafer containing
378  // the trigger cell)
379  std::unordered_map<short, std::vector<short>>::const_iterator surrounding_wafers_itr;
380  bool out_of_range_error = false;
381  switch(subdet)
382  {
384  surrounding_wafers_itr = wafer_neighbors_ee_.find(wafer);
385  if(surrounding_wafers_itr==wafer_neighbors_ee_.end()) out_of_range_error = true;
386  break;
388  surrounding_wafers_itr = wafer_neighbors_fh_.find(wafer);
389  if(surrounding_wafers_itr==wafer_neighbors_fh_.end()) out_of_range_error = true;
390  break;
391  default:
392  edm::LogError("HGCalTriggerGeometry") << "Unknown wafer neighbours for subdet "<<subdet<<"\n";
393  return geom_set();
394  }
395  if(out_of_range_error)
396  {
397  throw cms::Exception("BadGeometry")
398  << "HGCalTriggerGeometry: Neighbors are not defined for wafer " << wafer << " in subdetector " << subdet
399  << ". The wafer neighbor mapping should be modified. \n";
400  };
401  const std::vector<short>& surrounding_wafers = surrounding_wafers_itr->second;
402  // Find the types of the surrounding wafers
403  std::vector<int> types;
404  types.reserve(surrounding_wafers.size()+1); // includes the central wafer -> +1
405  types.emplace_back(wafer_type);
406  for(const auto w : surrounding_wafers)
407  {
408  // if no neighbor, use the same type as the central one
409  // to create the wafer configuration
410  int wt = wafer_type;
411  if(w!=-1) wt = detIdWaferType(subdet, w);
412  if(wt==0) return geom_set(); // invalid wafer type
413  types.emplace_back(wt);
414  }
415  // retrieve neighbors
416  unsigned trigger_cell_key = packTriggerCell(trigger_cell, types);
417  geom_set neighbor_detids;
418  auto neighbors_itr = trigger_cell_neighbors_.find(trigger_cell_key);
419  if(neighbors_itr==trigger_cell_neighbors_.end())
420  {
421  throw cms::Exception("BadGeometry")
422  << "HGCalTriggerGeometry: Neighbors are not defined for trigger cell " << trigger_cell << " with wafer configuration "
423  << std::bitset<7>(trigger_cell_key >> 8) << ". The trigger cell neighbor mapping should be modified. \n";
424  }
425  const auto& neighbors = neighbors_itr->second;
426  // create HGCalDetId of neighbors and check their validity
427  neighbor_detids.reserve(neighbors.size());
428  for(const auto& wafer_tc : neighbors)
429  {
430  if(wafer_tc.first-1>=(int)surrounding_wafers.size())
431  {
432  throw cms::Exception("BadGeometry")
433  << "HGCalTriggerGeometry: Undefined wafer neighbor number "<<wafer_tc.first
434  << " for wafer " << wafer << " and trigger cell " << trigger_cell
435  << ". The neighbor mapping files should be modified.";
436  }
437  unsigned neighbor_wafer = (wafer_tc.first==0 ? wafer : surrounding_wafers.at(wafer_tc.first-1));
438  int type = types.at(wafer_tc.first);
439  HGCalDetId neighbor_det_id((ForwardSubdetector)trigger_cell_det_id.subdetId(), trigger_cell_det_id.zside(), trigger_cell_det_id.layer(), type, neighbor_wafer, wafer_tc.second);
440  if(validTriggerCell(neighbor_det_id.rawId()))
441  {
442  neighbor_detids.emplace(neighbor_det_id.rawId());
443  }
444  }
445  return neighbor_detids;
446 }
type
Definition: HCALResponse.h:21
const double w
Definition: UKUtility.cc:23
unsigned packTriggerCell(unsigned, const std::vector< int > &) const
ForwardSubdetector
std::unordered_map< short, std::vector< short > > wafer_neighbors_fh_
std::unordered_map< short, std::vector< short > > wafer_neighbors_ee_
std::unordered_set< unsigned > geom_set
int detIdWaferType(unsigned subdet, short wafer) const
virtual bool validTriggerCell(const unsigned) const override final
std::unordered_map< int, std::set< std::pair< short, short > > > trigger_cell_neighbors_
HGCalTriggerGeometryBase::geom_ordered_set HGCalTriggerGeometryHexImp2::getOrderedCellsFromModule ( const unsigned  module_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 258 of file HGCalTriggerGeometryHexImp2.cc.

References detIdWaferType(), getTriggerCellsFromModule(), HGCEE, HGCHEF, HGCalDetId::layer(), module_to_wafers_ee_, module_to_wafers_fh_, number_cells_in_wafers_, DetId::subdetId(), validCellId(), HGCalDetId::wafer(), HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getCellsFromModule().

259 {
260  HGCalDetId module_det_id(module_id);
261  unsigned module = module_det_id.wafer();
262  unsigned subdet = module_det_id.subdetId();
263  std::pair<std::unordered_multimap<short, short>::const_iterator,
264  std::unordered_multimap<short, short>::const_iterator> wafer_itrs;
265  switch(subdet)
266  {
268  wafer_itrs = module_to_wafers_ee_.equal_range(module);
269  break;
271  wafer_itrs = module_to_wafers_fh_.equal_range(module);
272  break;
273  default:
274  edm::LogError("HGCalTriggerGeometry") << "Unknown module->wafers mapping for subdet "<<subdet<<"\n";
275  return geom_ordered_set();
276  };
277  geom_ordered_set cell_det_ids;
278  for(auto wafer_itr=wafer_itrs.first; wafer_itr!=wafer_itrs.second; wafer_itr++)
279  {
280  int wafer_type = detIdWaferType(subdet, wafer_itr->second);
281  if(wafer_type==0) wafer_type = module_det_id.waferType();
282  // loop on the cells in each wafer
283  for(int cell=0; cell<number_cells_in_wafers_.at(wafer_type); cell++)
284  {
285  HGCalDetId cell_id((ForwardSubdetector)module_det_id.subdetId(), module_det_id.zside(), module_det_id.layer(), wafer_type, wafer_itr->second, cell);
286  if(validCellId(subdet, cell_id)) cell_det_ids.emplace(cell_id.rawId());
287  }
288  }
289  return cell_det_ids;
290 }
std::unordered_map< short, short > number_cells_in_wafers_
std::unordered_multimap< short, short > module_to_wafers_fh_
ForwardSubdetector
bool validCellId(unsigned subdet, unsigned cell_id) const
std::unordered_multimap< short, short > module_to_wafers_ee_
std::set< unsigned > geom_ordered_set
int detIdWaferType(unsigned subdet, short wafer) const
Definition: vlib.h:208
HGCalTriggerGeometryBase::geom_ordered_set HGCalTriggerGeometryHexImp2::getOrderedTriggerCellsFromModule ( const unsigned  module_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 331 of file HGCalTriggerGeometryHexImp2.cc.

References detIdWaferType(), getNeighborsFromTriggerCell(), HGCEE, HGCHEF, HGCalDetId::layer(), module_to_wafers_ee_, module_to_wafers_fh_, number_trigger_cells_in_wafers_, DetId::subdetId(), validTriggerCell(), HGCalDetId::wafer(), HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getTriggerCellsFromModule().

332 {
333  HGCalDetId module_det_id(module_id);
334  unsigned module = module_det_id.wafer();
335  unsigned subdet = module_det_id.subdetId();
336  std::pair<std::unordered_multimap<short, short>::const_iterator,
337  std::unordered_multimap<short, short>::const_iterator> wafer_itrs;
338  switch(subdet)
339  {
341  wafer_itrs = module_to_wafers_ee_.equal_range(module);
342  break;
344  wafer_itrs = module_to_wafers_fh_.equal_range(module);
345  break;
346  default:
347  edm::LogError("HGCalTriggerGeometry") << "Unknown module->wafers mapping for subdet "<<subdet<<"\n";
348  return geom_ordered_set();
349  };
350  geom_ordered_set trigger_cell_det_ids;
351  // loop on the wafers included in the module
352  for(auto wafer_itr=wafer_itrs.first; wafer_itr!=wafer_itrs.second; wafer_itr++)
353  {
354  int wafer_type = detIdWaferType(subdet, wafer_itr->second);
355  if(wafer_type==0) wafer_type = module_det_id.waferType();
356  // loop on the trigger cells in each wafer
357  for(int trigger_cell=0; trigger_cell<number_trigger_cells_in_wafers_.at(wafer_type); trigger_cell++)
358  {
359  HGCalDetId trigger_cell_id((ForwardSubdetector)module_det_id.subdetId(), module_det_id.zside(), module_det_id.layer(), wafer_type, wafer_itr->second, trigger_cell);
360  if(validTriggerCell(trigger_cell_id)) trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
361  }
362  }
363  return trigger_cell_det_ids;
364 }
std::unordered_map< short, short > number_trigger_cells_in_wafers_
std::unordered_multimap< short, short > module_to_wafers_fh_
ForwardSubdetector
std::unordered_multimap< short, short > module_to_wafers_ee_
std::set< unsigned > geom_ordered_set
int detIdWaferType(unsigned subdet, short wafer) const
virtual bool validTriggerCell(const unsigned) const override final
Definition: vlib.h:208
unsigned HGCalTriggerGeometryHexImp2::getTriggerCellFromCell ( const unsigned  cell_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 119 of file HGCalTriggerGeometryHexImp2.cc.

References HGCalDetId::cell(), cells_to_trigger_cells_, Exception, getModuleFromCell(), HGCalDetId::layer(), DetId::subdetId(), HGCalDetId::wafer(), HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by initialize().

120 {
121  HGCalDetId cell_det_id(cell_id);
122  int wafer_type = cell_det_id.waferType();
123  unsigned cell = cell_det_id.cell();
124  // FIXME: better way to do this cell->TC mapping?
125  auto trigger_cell_itr = cells_to_trigger_cells_.find(std::make_pair(wafer_type,cell));
126  if(trigger_cell_itr==cells_to_trigger_cells_.end())
127  {
128  throw cms::Exception("BadGeometry")
129  << "HGCalTriggerGeometry: HGCal cell " << cell << " is not mapped to any trigger cell for the wafer type " << wafer_type
130  << ". The trigger cell mapping should be modified.\n";
131  }
132  unsigned trigger_cell = trigger_cell_itr->second;
133  return HGCalDetId((ForwardSubdetector)cell_det_id.subdetId(), cell_det_id.zside(), cell_det_id.layer(), cell_det_id.waferType(), cell_det_id.wafer(), trigger_cell).rawId();
134 }
ForwardSubdetector
std::map< std::pair< short, short >, short > cells_to_trigger_cells_
GlobalPoint HGCalTriggerGeometryHexImp2::getTriggerCellPosition ( const unsigned  trigger_cell_det_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 451 of file HGCalTriggerGeometryHexImp2.cc.

References es_info_, HGCalTriggerGeometryBase::es_info::geom_ee, HGCalTriggerGeometryBase::es_info::geom_fh, getCellsFromTriggerCell(), getModulePosition(), HGCalGeometry::getPosition(), HGCEE, and DetId::subdetId().

Referenced by getNeighborsFromTriggerCell().

452 {
453  // Position: barycenter of the trigger cell.
454  Basic3DVector<float> triggerCellVector(0.,0.,0.);
455  const auto cell_ids = getCellsFromTriggerCell(trigger_cell_det_id);
456  for(const auto& cell : cell_ids)
457  {
458  HGCalDetId cellDetId(cell);
459  triggerCellVector += (cellDetId.subdetId()==ForwardSubdetector::HGCEE ? es_info_.geom_ee->getPosition(cellDetId) : es_info_.geom_fh->getPosition(cellDetId)).basicVector();
460  }
461  return GlobalPoint( triggerCellVector/cell_ids.size() );
462 
463 }
virtual geom_set getCellsFromTriggerCell(const unsigned) const override final
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
GlobalPoint getPosition(const DetId &id) const
edm::ESHandle< HGCalGeometry > geom_ee
edm::ESHandle< HGCalGeometry > geom_fh
HGCalTriggerGeometryBase::geom_set HGCalTriggerGeometryHexImp2::getTriggerCellsFromModule ( const unsigned  module_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 294 of file HGCalTriggerGeometryHexImp2.cc.

References detIdWaferType(), getOrderedTriggerCellsFromModule(), HGCEE, HGCHEF, HGCalDetId::layer(), module_to_wafers_ee_, module_to_wafers_fh_, number_trigger_cells_in_wafers_, DetId::subdetId(), validTriggerCell(), HGCalDetId::wafer(), HGCalDetId::waferType(), and HGCalDetId::zside().

Referenced by getOrderedCellsFromModule().

295 {
296  HGCalDetId module_det_id(module_id);
297  unsigned module = module_det_id.wafer();
298  unsigned subdet = module_det_id.subdetId();
299  std::pair<std::unordered_multimap<short, short>::const_iterator,
300  std::unordered_multimap<short, short>::const_iterator> wafer_itrs;
301  switch(subdet)
302  {
304  wafer_itrs = module_to_wafers_ee_.equal_range(module);
305  break;
307  wafer_itrs = module_to_wafers_fh_.equal_range(module);
308  break;
309  default:
310  edm::LogError("HGCalTriggerGeometry") << "Unknown module->wafers mapping for subdet "<<subdet<<"\n";
311  return geom_set();
312  };
313  geom_set trigger_cell_det_ids;
314  // loop on the wafers included in the module
315  for(auto wafer_itr=wafer_itrs.first; wafer_itr!=wafer_itrs.second; wafer_itr++)
316  {
317  int wafer_type = detIdWaferType(subdet, wafer_itr->second);
318  if(wafer_type==0) wafer_type = module_det_id.waferType();
319  // loop on the trigger cells in each wafer
320  for(int trigger_cell=0; trigger_cell<number_trigger_cells_in_wafers_.at(wafer_type); trigger_cell++)
321  {
322  HGCalDetId trigger_cell_id((ForwardSubdetector)module_det_id.subdetId(), module_det_id.zside(), module_det_id.layer(), wafer_type, wafer_itr->second, trigger_cell);
323  if(validTriggerCell(trigger_cell_id)) trigger_cell_det_ids.emplace(trigger_cell_id.rawId());
324  }
325  }
326  return trigger_cell_det_ids;
327 }
std::unordered_map< short, short > number_trigger_cells_in_wafers_
std::unordered_multimap< short, short > module_to_wafers_fh_
ForwardSubdetector
std::unordered_multimap< short, short > module_to_wafers_ee_
std::unordered_set< unsigned > geom_set
int detIdWaferType(unsigned subdet, short wafer) const
virtual bool validTriggerCell(const unsigned) const override final
Definition: vlib.h:208
void HGCalTriggerGeometryHexImp2::initialize ( const es_info &  esInfo)
finaloverridevirtual

Definition at line 109 of file HGCalTriggerGeometryHexImp2.cc.

References es_info_, fillMaps(), fillNeighborMaps(), and getTriggerCellFromCell().

Referenced by reset().

110 {
111  es_info_ = esInfo;
112  fillMaps(esInfo);
113  fillNeighborMaps(esInfo);
114 
115 }
unsigned HGCalTriggerGeometryHexImp2::packTriggerCell ( unsigned  trigger_cell,
const std::vector< int > &  wafer_types 
) const
private

Definition at line 653 of file HGCalTriggerGeometryHexImp2.cc.

References detIdWaferType(), and mps_fire::i.

Referenced by fillNeighborMaps(), and getNeighborsFromTriggerCell().

654 {
655  unsigned packed_value = trigger_cell;
656  for(unsigned i=0; i<wafer_types.size(); i++)
657  {
658  // trigger cell id on 8 bits
659  // wafer configuration bits: 0=coarse, 1=fine
660  if(wafer_types.at(i)==1) packed_value += (0x1<<(8+i));
661  }
662  return packed_value;
663 }
void HGCalTriggerGeometryHexImp2::reset ( void  )
finaloverridevirtual

Reimplemented from HGCalTriggerGeometryBase.

Definition at line 95 of file HGCalTriggerGeometryHexImp2.cc.

References cells_to_trigger_cells_, initialize(), module_to_wafers_ee_, module_to_wafers_fh_, number_cells_in_wafers_, number_trigger_cells_in_wafers_, trigger_cells_to_cells_, wafer_to_module_ee_, and wafer_to_module_fh_.

Referenced by HGCalTriggerGeometryHexImp2().

96 {
97  wafer_to_module_ee_.clear();
98  wafer_to_module_fh_.clear();
99  module_to_wafers_ee_.clear();
100  module_to_wafers_fh_.clear();
101  cells_to_trigger_cells_.clear();
102  trigger_cells_to_cells_.clear();
104  number_cells_in_wafers_.clear();
105 }
std::unordered_map< short, short > number_cells_in_wafers_
std::unordered_map< short, short > number_trigger_cells_in_wafers_
std::unordered_multimap< short, short > module_to_wafers_fh_
std::unordered_multimap< short, short > module_to_wafers_ee_
std::unordered_map< short, short > wafer_to_module_ee_
std::unordered_map< short, short > wafer_to_module_fh_
std::map< std::pair< short, short >, short > cells_to_trigger_cells_
std::multimap< std::pair< short, short >, short > trigger_cells_to_cells_
bool HGCalTriggerGeometryHexImp2::validCellId ( unsigned  subdet,
unsigned  cell_id 
) const
private

Definition at line 710 of file HGCalTriggerGeometryHexImp2.cc.

References DEFINE_EDM_PLUGIN, es_info_, HGCEE, HGCHEF, matching::is_valid(), HGCalTriggerGeometryBase::es_info::topo_ee, HGCalTriggerGeometryBase::es_info::topo_fh, and HGCalTopology::valid().

Referenced by getCellsFromModule(), getOrderedCellsFromModule(), and validTriggerCell().

711 {
712  bool is_valid = false;
713  switch(subdet)
714  {
716  is_valid = es_info_.topo_ee->valid(cell_id);
717  break;
719  is_valid = es_info_.topo_fh->valid(cell_id);
720  break;
721  default:
722  is_valid = false;
723  break;
724  }
725  return is_valid;
726 }
bool is_valid(const Digi &d)
Definition: GenericDigi.h:44
edm::ESHandle< HGCalTopology > topo_ee
virtual bool valid(const DetId &id) const
Is this a valid cell id.
edm::ESHandle< HGCalTopology > topo_fh
bool HGCalTriggerGeometryHexImp2::validTriggerCell ( const unsigned  trigger_cell_id) const
finaloverridevirtual

Implements HGCalTriggerGeometryBase.

Definition at line 690 of file HGCalTriggerGeometryHexImp2.cc.

References getCellsFromTriggerCell(), matching::is_valid(), DetId::subdetId(), and validCellId().

Referenced by detIdWaferType(), getNeighborsFromTriggerCell(), getOrderedTriggerCellsFromModule(), and getTriggerCellsFromModule().

691 {
692  // Check the validity of a trigger cell with the
693  // validity of the cells. One valid cell in the
694  // trigger cell is enough to make the trigger cell
695  // valid.
696  HGCalDetId trigger_cell_det_id(trigger_cell_id);
697  unsigned subdet = trigger_cell_det_id.subdetId();
698  const geom_set cells = getCellsFromTriggerCell(trigger_cell_id);
699  bool is_valid = false;
700  for(const auto cell_id : cells)
701  {
702  is_valid |= validCellId(subdet, cell_id);
703  if(is_valid) break;
704  }
705  return is_valid;
706 }
virtual geom_set getCellsFromTriggerCell(const unsigned) const override final
bool is_valid(const Digi &d)
Definition: GenericDigi.h:44
bool validCellId(unsigned subdet, unsigned cell_id) const
std::unordered_set< unsigned > geom_set

Member Data Documentation

std::map<std::pair<short,short>, short> HGCalTriggerGeometryHexImp2::cells_to_trigger_cells_
private

Definition at line 54 of file HGCalTriggerGeometryHexImp2.cc.

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

es_info HGCalTriggerGeometryHexImp2::es_info_
private
edm::FileInPath HGCalTriggerGeometryHexImp2::l1tCellNeighborsMapping_
private

Definition at line 41 of file HGCalTriggerGeometryHexImp2.cc.

Referenced by fillNeighborMaps().

edm::FileInPath HGCalTriggerGeometryHexImp2::l1tCellsMapping_
private

Definition at line 40 of file HGCalTriggerGeometryHexImp2.cc.

Referenced by fillMaps().

edm::FileInPath HGCalTriggerGeometryHexImp2::l1tModulesMapping_
private

Definition at line 43 of file HGCalTriggerGeometryHexImp2.cc.

Referenced by fillMaps().

edm::FileInPath HGCalTriggerGeometryHexImp2::l1tWaferNeighborsMapping_
private

Definition at line 42 of file HGCalTriggerGeometryHexImp2.cc.

Referenced by fillNeighborMaps().

std::unordered_multimap<short, short> HGCalTriggerGeometryHexImp2::module_to_wafers_ee_
private
std::unordered_multimap<short, short> HGCalTriggerGeometryHexImp2::module_to_wafers_fh_
private
std::unordered_map<short, short> HGCalTriggerGeometryHexImp2::number_cells_in_wafers_
private
std::unordered_map<short, short> HGCalTriggerGeometryHexImp2::number_trigger_cells_in_wafers_
private
std::unordered_map<int, std::set<std::pair<short,short> > > HGCalTriggerGeometryHexImp2::trigger_cell_neighbors_
private

Definition at line 68 of file HGCalTriggerGeometryHexImp2.cc.

Referenced by fillNeighborMaps(), and getNeighborsFromTriggerCell().

std::multimap<std::pair<short,short>, short> HGCalTriggerGeometryHexImp2::trigger_cells_to_cells_
private

Definition at line 55 of file HGCalTriggerGeometryHexImp2.cc.

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

std::unordered_map<short, std::vector<short> > HGCalTriggerGeometryHexImp2::wafer_neighbors_ee_
private

Definition at line 71 of file HGCalTriggerGeometryHexImp2.cc.

Referenced by fillNeighborMaps(), and getNeighborsFromTriggerCell().

std::unordered_map<short, std::vector<short> > HGCalTriggerGeometryHexImp2::wafer_neighbors_fh_
private

Definition at line 72 of file HGCalTriggerGeometryHexImp2.cc.

Referenced by fillNeighborMaps(), and getNeighborsFromTriggerCell().

std::unordered_map<short, short> HGCalTriggerGeometryHexImp2::wafer_to_module_ee_
private
std::unordered_map<short, short> HGCalTriggerGeometryHexImp2::wafer_to_module_fh_
private