CMS 3D CMS Logo

HGCalTriggerGeometryBase.h
Go to the documentation of this file.
1 #ifndef __L1Trigger_L1THGCal_HGCalTriggerGeometryBase_h__
2 #define __L1Trigger_L1THGCal_HGCalTriggerGeometryBase_h__
3 
4 #include <iostream>
5 #include <unordered_set>
6 #include <unordered_map>
7 
9 
12 
17 
18 
19 
20 // Pure virtual trigger geometry class
21 // Provides the interface to access trigger cell and module mappings
23 {
24  public:
25  typedef std::unordered_map<unsigned,unsigned> geom_map;
26  typedef std::unordered_set<unsigned> geom_set;
27  typedef std::set<unsigned> geom_ordered_set;
28 
31 
32  const std::string& name() const { return name_; }
33 
34  bool isV9Geometry() const {return !calo_geometry_.isValid();}
36  const HGCalGeometry* eeGeometry() const
37  {
39  }
40  const HGCalGeometry* fhGeometry() const
41  {
43  }
44  const HcalGeometry* bhGeometry() const
45  {
47  {
48  throw cms::Exception("HGCalTriggerGeometry")
49  << "bhGeometry cannot be used with the V9 geometry";
50  }
51  return (static_cast<const HcalGeometry*>(calo_geometry_->getSubdetectorGeometry(DetId::Hcal,HcalEndcap)));
52  }
53  const HGCalGeometry* hsiGeometry() const {return fhGeometry();}
54  const HGCalGeometry* hscGeometry() const
55  {
57  {
58  throw cms::Exception("HGCalTriggerGeometry")
59  << "hscGeometry cannot be used with the V7 and V8 geometries";
60  }
61  return hgc_hsc_geometry_.product();
62  }
63  const HGCalTopology& eeTopology() const {return eeGeometry()->topology();}
64  const HGCalTopology& fhTopology() const {return fhGeometry()->topology();}
65  const HcalTopology& bhTopology() const {return bhGeometry()->topology();}
66  const HGCalTopology& hsiTopology() const {return hsiGeometry()->topology();}
67  const HGCalTopology& hscTopology() const {return hscGeometry()->topology();}
68 
69  // non-const access to the geometry class
70  virtual void initialize(const edm::ESHandle<CaloGeometry>&) = 0;
71  virtual void initialize(const edm::ESHandle<HGCalGeometry>&,
73  const edm::ESHandle<HGCalGeometry>&) = 0;
74  virtual void reset();
75 
76  // const access to the geometry class
77  virtual unsigned getTriggerCellFromCell( const unsigned cell_det_id ) const = 0;
78  virtual unsigned getModuleFromCell( const unsigned cell_det_id ) const = 0;
79  virtual unsigned getModuleFromTriggerCell( const unsigned trigger_cell_det_id ) const = 0;
80 
81  virtual geom_set getCellsFromTriggerCell( const unsigned cell_det_id ) const = 0;
82  virtual geom_set getCellsFromModule( const unsigned cell_det_id ) const = 0;
83  virtual geom_set getTriggerCellsFromModule( const unsigned trigger_cell_det_id ) const = 0;
84 
85  virtual geom_ordered_set getOrderedCellsFromModule( const unsigned cell_det_id ) const = 0;
86  virtual geom_ordered_set getOrderedTriggerCellsFromModule( const unsigned trigger_cell_det_id ) const = 0;
87 
88  virtual geom_set getNeighborsFromTriggerCell( const unsigned trigger_cell_det_id ) const = 0;
89 
90  virtual GlobalPoint getTriggerCellPosition(const unsigned trigger_cell_det_id) const = 0;
91  virtual GlobalPoint getModulePosition(const unsigned module_det_id) const = 0;
92 
93  virtual bool validTriggerCell( const unsigned trigger_cell_id) const = 0;
94  virtual bool disconnectedModule(const unsigned module_id) const = 0;
95  virtual unsigned triggerLayer(const unsigned id) const = 0;
96 
97  protected:
102 
103 
104  private:
106 
111 
112 };
113 
116 
117 
118 #endif
HGCalTriggerGeometryBase(const edm::ParameterSet &conf)
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:49
virtual geom_ordered_set getOrderedTriggerCellsFromModule(const unsigned trigger_cell_det_id) const =0
virtual geom_set getCellsFromTriggerCell(const unsigned cell_det_id) const =0
std::unordered_map< unsigned, unsigned > geom_map
edmplugin::PluginFactory< HGCalTriggerGeometryBase *(const edm::ParameterSet &) > HGCalTriggerGeometryFactory
virtual geom_set getCellsFromModule(const unsigned cell_det_id) const =0
virtual GlobalPoint getModulePosition(const unsigned module_det_id) const =0
const HGCalGeometry * eeGeometry() const
const HGCalTopology & eeTopology() const
virtual geom_set getNeighborsFromTriggerCell(const unsigned trigger_cell_det_id) const =0
const HGCalTopology & hsiTopology() const
void setEEGeometry(const edm::ESHandle< HGCalGeometry > &geom)
const HcalTopology & topology() const
Definition: HcalGeometry.h:117
virtual geom_set getTriggerCellsFromModule(const unsigned trigger_cell_det_id) const =0
const HGCalGeometry * fhGeometry() const
edm::ESHandle< HGCalGeometry > hgc_hsc_geometry_
const HcalTopology & bhTopology() const
const HGCalTopology & topology() const
virtual unsigned triggerLayer(const unsigned id) const =0
void setCaloGeometry(const edm::ESHandle< CaloGeometry > &geom)
const HcalGeometry * bhGeometry() const
const HGCalGeometry * hsiGeometry() const
virtual bool disconnectedModule(const unsigned module_id) const =0
virtual unsigned getModuleFromCell(const unsigned cell_det_id) const =0
virtual unsigned getModuleFromTriggerCell(const unsigned trigger_cell_det_id) const =0
const HGCalGeometry * hscGeometry() const
const HGCalTopology & hscTopology() const
virtual geom_ordered_set getOrderedCellsFromModule(const unsigned cell_det_id) const =0
std::set< unsigned > geom_ordered_set
virtual bool validTriggerCell(const unsigned trigger_cell_id) const =0
void setHScGeometry(const edm::ESHandle< HGCalGeometry > &geom)
edm::ESHandle< CaloGeometry > calo_geometry_
std::unordered_set< unsigned > geom_set
const std::string & name() const
bool isValid() const
Definition: ESHandle.h:47
T const * product() const
Definition: ESHandle.h:86
virtual void initialize(const edm::ESHandle< CaloGeometry > &)=0
edm::ESHandle< HGCalGeometry > hgc_hsi_geometry_
edm::ESHandle< HGCalGeometry > hgc_ee_geometry_
virtual unsigned getTriggerCellFromCell(const unsigned cell_det_id) const =0
void setHSiGeometry(const edm::ESHandle< HGCalGeometry > &geom)
const HGCalTopology & fhTopology() const
virtual GlobalPoint getTriggerCellPosition(const unsigned trigger_cell_det_id) const =0
const edm::ESHandle< CaloGeometry > & caloGeometry() const