CMS 3D CMS Logo

HcalGeometry.h
Go to the documentation of this file.
1 #ifndef HcalGeometry_h
2 #define HcalGeometry_h
3 
5 
13 
16 
19 
20 public:
23 
24  typedef std::vector<IdealObliquePrism> HBCellVec;
25  typedef std::vector<IdealObliquePrism> HECellVec;
26  typedef std::vector<IdealObliquePrism> HOCellVec;
27  typedef std::vector<IdealZPrism> HFCellVec;
28 
32 
37 
39 
40  static std::string dbString() { return "PHcalRcd"; }
41 
42  unsigned int numberOfShapes() const override { return m_topology.getNumberOfShapes(); }
43  unsigned int numberOfParametersPerShape() const override { return k_NumberOfParametersPerShape; }
44 
45  explicit HcalGeometry(const HcalTopology& topology);
46 
48  ~HcalGeometry() override;
49 
50  const std::vector<DetId>& getValidDetIds(DetId::Detector det = DetId::Detector(0), int subdet = 0) const override;
51 
52  std::shared_ptr<const CaloCellGeometry> getGeometry(const DetId& id) const override;
53 
54  DetId getClosestCell(const GlobalPoint& r) const override;
55  DetId getClosestCell(const GlobalPoint& r, bool ignoreCorrect) const;
56 
57  CaloSubdetectorGeometry::DetIdSet getCells(const GlobalPoint& r, double dR) const override;
58 
59  GlobalPoint getPosition(const DetId& id) const;
60  GlobalPoint getBackPosition(const DetId& id) const;
62 
63  static std::string producerTag() { return "HCAL"; }
64 
65  static unsigned int numberOfBarrelAlignments() { return 36; }
66 
67  static unsigned int numberOfEndcapAlignments() { return 36; }
68 
69  static unsigned int numberOfForwardAlignments() { return 36; }
70 
71  static unsigned int numberOfOuterAlignments() { return 60; }
72 
73  unsigned int getHxSize(const int type) const;
74 
75  static unsigned int numberOfAlignments() {
78  }
79 
80  static unsigned int alignmentBarrelIndexLocal(const DetId& id);
81  static unsigned int alignmentEndcapIndexLocal(const DetId& id);
82  static unsigned int alignmentForwardIndexLocal(const DetId& id);
83  static unsigned int alignmentOuterIndexLocal(const DetId& id);
84  static unsigned int alignmentTransformIndexLocal(const DetId& id);
85 
86  static unsigned int alignmentBarEndForIndexLocal(const DetId& id, unsigned int nD);
87 
88  static unsigned int alignmentTransformIndexGlobal(const DetId& id);
89 
90  static DetId detIdFromLocalAlignmentIndex(unsigned int i);
91  static DetId detIdFromBarrelAlignmentIndex(unsigned int i);
92  static DetId detIdFromEndcapAlignmentIndex(unsigned int i);
93  static DetId detIdFromForwardAlignmentIndex(unsigned int i);
94  static DetId detIdFromOuterAlignmentIndex(unsigned int i);
95 
96  void localCorners(Pt3DVec& lc, const CCGFloat* pv, unsigned int i, Pt3D& ref);
97 
98  void newCell(const GlobalPoint& f1,
99  const GlobalPoint& f2,
100  const GlobalPoint& f3,
101  const CCGFloat* parm,
102  const DetId& detId) override;
103 
107  CaloSubdetectorGeometry::IVec& dinsVector) const override;
108 
109  const HcalTopology& topology() const { return m_topology; }
110 
111 protected:
112  unsigned int indexFor(const DetId& id) const override { return m_topology.detId2denseId(id); }
113  unsigned int sizeForDenseIndex(const DetId& id) const override { return m_topology.ncells(); }
114 
115  // Modify the RawPtr class
116  const CaloCellGeometry* getGeometryRawPtr(uint32_t index) const override;
117 
118 private:
119  // Base clas for getting geometry
120  std::shared_ptr<const CaloCellGeometry> getGeometryBase(const DetId& id) const {
122  }
123 
124  //returns din
125  unsigned int newCellImpl(
126  const GlobalPoint& f1, const GlobalPoint& f2, const GlobalPoint& f3, const CCGFloat* parm, const DetId& detId);
127 
128  //can only be used by friend classes, to ensure sorting is done at the end
129  void newCellFast(
130  const GlobalPoint& f1, const GlobalPoint& f2, const GlobalPoint& f3, const CCGFloat* parm, const DetId& detId);
131 
132  void increaseReserve(unsigned int extra);
133  void sortValidIds();
134 
135  void fillDetIds() const;
136 
137  void init();
138 
140  int etaRing(HcalSubdetector bc, double abseta) const;
141  int phiBin(HcalSubdetector bc, int etaring, double phi) const;
142  DetId correctId(const DetId& id) const;
143 
146 
153 
154  HBCellVec m_hbCellVec;
155  HECellVec m_heCellVec;
156  HOCellVec m_hoCellVec;
157  HFCellVec m_hfCellVec;
158 };
159 
160 #endif
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:65
type
Definition: HCALResponse.h:21
static unsigned int alignmentTransformIndexLocal(const DetId &id)
std::shared_ptr< const CaloCellGeometry > getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.cc:88
std::vector< CCGFloat > DimVec
CaloSubdetectorGeometry::DetIdSet getCells(const GlobalPoint &r, double dR) const override
Get a list of all cells within a dR of the given cell.
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
Definition: HcalGeometry.h:148
const CaloCellGeometry * getGeometryRawPtr(uint32_t index) const override
static unsigned int alignmentEndcapIndexLocal(const DetId &id)
unsigned int getHxSize(const int type) const
static DetId detIdFromOuterAlignmentIndex(unsigned int i)
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const override
Get a list of valid detector ids (for the given subdetector)
Definition: HcalGeometry.cc:75
static std::string producerTag()
Definition: HcalGeometry.h:63
unsigned int numberOfShapes() const override
Definition: HcalGeometry.h:42
const HcalTopology & m_topology
Definition: HcalGeometry.h:144
std::vector< unsigned int > IVec
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
Definition: HcalGeometry.h:151
std::vector< CCGFloat > TrVec
HcalAlignmentRcd AlignmentRecord
Definition: HcalGeometry.h:33
std::vector< IdealObliquePrism > HECellVec
Definition: HcalGeometry.h:25
std::vector< Pt3D > Pt3DVec
bool m_mergePosition
Definition: HcalGeometry.h:145
const HcalTopology & topology() const
Definition: HcalGeometry.h:109
std::shared_ptr< const CaloCellGeometry > getGeometryBase(const DetId &id) const
Definition: HcalGeometry.h:120
void newCellFast(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: HcalGeometry.h:31
virtual std::shared_ptr< const CaloCellGeometry > cellGeomPtr(uint32_t index) const
HBCellVec m_hbCellVec
Definition: HcalGeometry.h:154
PHcalRcd PGeometryRecord
Definition: HcalGeometry.h:35
HOCellVec m_hoCellVec
Definition: HcalGeometry.h:156
unsigned int getNumberOfShapes() const
Definition: HcalTopology.h:161
HFCellVec m_hfCellVec
Definition: HcalGeometry.h:157
unsigned int numberOfParametersPerShape() const override
Definition: HcalGeometry.h:43
std::vector< IdealObliquePrism > HOCellVec
Definition: HcalGeometry.h:26
static unsigned int numberOfOuterAlignments()
Definition: HcalGeometry.h:71
void sortValidIds()
DetId correctId(const DetId &id) const
unsigned int sizeForDenseIndex(const DetId &id) const override
Definition: HcalGeometry.h:113
static DetId detIdFromForwardAlignmentIndex(unsigned int i)
static unsigned int alignmentTransformIndexGlobal(const DetId &id)
static unsigned int alignmentBarrelIndexLocal(const DetId &id)
HcalSubdetector
Definition: HcalAssistant.h:31
def pv(vc)
Definition: MetAnalyzer.py:7
static DetId detIdFromBarrelAlignmentIndex(unsigned int i)
int phiBin(HcalSubdetector bc, int etaring, double phi) const
static DetId detIdFromLocalAlignmentIndex(unsigned int i)
int etaRing(HcalSubdetector bc, double abseta) const
helper methods for getClosestCell
CaloSubdetectorGeometry::IVec m_dins
Definition: HcalGeometry.h:152
HcalGeometry(const HcalTopology &topology)
Definition: HcalGeometry.cc:16
HcalGeometryRecord AlignedRecord
Definition: HcalGeometry.h:34
GlobalPoint getPosition(const DetId &id) const
void localCorners(Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref)
static unsigned int alignmentOuterIndexLocal(const DetId &id)
std::vector< IdealZPrism > HFCellVec
Definition: HcalGeometry.h:27
~HcalGeometry() override
The HcalGeometry will delete all its cell geometries at destruction time.
Definition: HcalGeometry.cc:21
Definition: DetId.h:17
static unsigned int numberOfEndcapAlignments()
Definition: HcalGeometry.h:67
static std::string dbString()
Definition: HcalGeometry.h:40
Detector
Definition: DetId.h:24
CaloCellGeometry::CCGFloat CCGFloat
Definition: HcalGeometry.h:29
CaloCellGeometry::CornersVec getCorners(const DetId &id) const
HepGeom::Point3D< CCGFloat > Pt3D
std::vector< IdealObliquePrism > HBCellVec
Definition: HcalGeometry.h:24
HECellVec m_heCellVec
Definition: HcalGeometry.h:155
void increaseReserve(unsigned int extra)
void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
Definition: HcalGeometry.h:150
void fillDetIds() const
Definition: HcalGeometry.cc:39
unsigned int indexFor(const DetId &id) const override
Definition: HcalGeometry.h:112
void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId) override
static unsigned int numberOfForwardAlignments()
Definition: HcalGeometry.h:69
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
static unsigned int alignmentForwardIndexLocal(const DetId &id)
GlobalPoint getBackPosition(const DetId &id) const
HcalDetId DetIdType
Definition: HcalGeometry.h:36
static DetId detIdFromEndcapAlignmentIndex(unsigned int i)
static unsigned int alignmentBarEndForIndexLocal(const DetId &id, unsigned int nD)
friend class HcalGeometryPlan1Tester
Definition: HcalGeometry.h:18
edm::AtomicPtrCache< std::vector< DetId > > m_hoIds
Definition: HcalGeometry.h:149
CaloCellGeometry::Pt3D Pt3D
Definition: HcalGeometry.h:30
unsigned int newCellImpl(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
edm::AtomicPtrCache< std::vector< DetId > > m_hbIds
Definition: HcalGeometry.h:147
static unsigned int numberOfAlignments()
Definition: HcalGeometry.h:75
DetId getClosestCell(const GlobalPoint &r) const override