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  CaloCellGeometryMayOwnPtr 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 getPosition(uint32_t id, bool type) const;
61  GlobalPoint getBackPosition(const DetId& id) const;
62  GlobalPoint getBackPosition(uint32_t id, bool type) const;
64 
65  static std::string producerTag() { return "HCAL"; }
66 
67  static unsigned int numberOfBarrelAlignments() { return 36; }
68 
69  static unsigned int numberOfEndcapAlignments() { return 36; }
70 
71  static unsigned int numberOfForwardAlignments() { return 36; }
72 
73  static unsigned int numberOfOuterAlignments() { return 60; }
74 
75  unsigned int getHxSize(const int type) const;
76 
77  static unsigned int numberOfAlignments() {
80  }
81 
82  static unsigned int alignmentBarrelIndexLocal(const DetId& id);
83  static unsigned int alignmentEndcapIndexLocal(const DetId& id);
84  static unsigned int alignmentForwardIndexLocal(const DetId& id);
85  static unsigned int alignmentOuterIndexLocal(const DetId& id);
86  static unsigned int alignmentTransformIndexLocal(const DetId& id);
87 
88  static unsigned int alignmentBarEndForIndexLocal(const DetId& id, unsigned int nD);
89 
90  static unsigned int alignmentTransformIndexGlobal(const DetId& id);
91 
92  static DetId detIdFromLocalAlignmentIndex(unsigned int i);
93  static DetId detIdFromBarrelAlignmentIndex(unsigned int i);
94  static DetId detIdFromEndcapAlignmentIndex(unsigned int i);
95  static DetId detIdFromForwardAlignmentIndex(unsigned int i);
96  static DetId detIdFromOuterAlignmentIndex(unsigned int i);
97 
98  void localCorners(Pt3DVec& lc, const CCGFloat* pv, unsigned int i, Pt3D& ref);
99 
100  void newCell(const GlobalPoint& f1,
101  const GlobalPoint& f2,
102  const GlobalPoint& f3,
103  const CCGFloat* parm,
104  const DetId& detId) override;
105 
109  CaloSubdetectorGeometry::IVec& dinsVector) const override;
110 
111  const HcalTopology& topology() const { return m_topology; }
112 
113 protected:
114  unsigned int indexFor(const DetId& id) const override { return m_topology.detId2denseId(id); }
115  unsigned int sizeForDenseIndex(const DetId& id) const override { return m_topology.ncells(); }
116 
117  // Modify the RawPtr class
118  CaloCellGeometryPtr getGeometryRawPtr(uint32_t index) const override;
119 
120 private:
121  // Base clas for getting geometry
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 
158 };
159 
160 #endif
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:67
static unsigned int alignmentTransformIndexLocal(const DetId &id)
DetId correctId(const DetId &id) const
std::vector< CCGFloat > DimVec
GlobalPoint getBackPosition(const DetId &id) const
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
Definition: HcalGeometry.h:148
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:76
static unsigned int alignmentEndcapIndexLocal(const DetId &id)
static DetId detIdFromOuterAlignmentIndex(unsigned int i)
DetId getClosestCell(const GlobalPoint &r) const override
static std::string producerTag()
Definition: HcalGeometry.h:65
const HcalTopology & m_topology
Definition: HcalGeometry.h:144
std::vector< unsigned int > IVec
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
Definition: HcalGeometry.h:151
unsigned int detId2denseId(const DetId &id) const override
return a linear packed id
unsigned int sizeForDenseIndex(const DetId &id) const override
Definition: HcalGeometry.h:115
std::vector< CCGFloat > TrVec
HcalAlignmentRcd AlignmentRecord
Definition: HcalGeometry.h:33
std::vector< IdealObliquePrism > HECellVec
Definition: HcalGeometry.h:25
std::vector< Pt3D > Pt3DVec
int phiBin(HcalSubdetector bc, int etaring, double phi) const
unsigned int getNumberOfShapes() const
Definition: HcalTopology.h:158
bool m_mergePosition
Definition: HcalGeometry.h:145
CaloCellGeometryMayOwnPtr getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
Definition: HcalGeometry.cc:89
void newCellFast(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
CaloCellGeometry::Pt3DVec Pt3DVec
Definition: HcalGeometry.h:31
CaloCellGeometry::CornersVec getCorners(const DetId &id) const
CaloCellGeometryPtr getGeometryBase(const DetId &id) const
Definition: HcalGeometry.h:122
HBCellVec m_hbCellVec
Definition: HcalGeometry.h:154
PHcalRcd PGeometryRecord
Definition: HcalGeometry.h:35
void fillDetIds() const
Definition: HcalGeometry.cc:40
HOCellVec m_hoCellVec
Definition: HcalGeometry.h:156
void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
HFCellVec m_hfCellVec
Definition: HcalGeometry.h:157
std::vector< IdealObliquePrism > HOCellVec
Definition: HcalGeometry.h:26
unsigned int indexFor(const DetId &id) const override
Definition: HcalGeometry.h:114
static unsigned int numberOfOuterAlignments()
Definition: HcalGeometry.h:73
void sortValidIds()
static DetId detIdFromForwardAlignmentIndex(unsigned int i)
static unsigned int alignmentTransformIndexGlobal(const DetId &id)
static unsigned int alignmentBarrelIndexLocal(const DetId &id)
unsigned int numberOfParametersPerShape() const override
Definition: HcalGeometry.h:43
HcalSubdetector
Definition: HcalAssistant.h:31
CaloCellGeometry::CCGFloat CCGFloat
static DetId detIdFromBarrelAlignmentIndex(unsigned int i)
static DetId detIdFromLocalAlignmentIndex(unsigned int i)
CaloSubdetectorGeometry::IVec m_dins
Definition: HcalGeometry.h:152
HcalGeometry(const HcalTopology &topology)
Definition: HcalGeometry.cc:18
HcalGeometryRecord AlignedRecord
Definition: HcalGeometry.h:34
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
void localCorners(Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref)
CaloSubdetectorGeometry::DetIdSet getCells(const GlobalPoint &r, double dR) const override
Get a list of all cells within a dR of the given cell.
int etaRing(HcalSubdetector bc, double abseta) const
helper methods for getClosestCell
static unsigned int alignmentOuterIndexLocal(const DetId &id)
CaloCellGeometry::Pt3D Pt3D
std::vector< IdealZPrism > HFCellVec
Definition: HcalGeometry.h:27
~HcalGeometry() override
The HcalGeometry will delete all its cell geometries at destruction time.
Definition: HcalGeometry.cc:23
Definition: DetId.h:17
static unsigned int numberOfEndcapAlignments()
Definition: HcalGeometry.h:69
static std::string dbString()
Definition: HcalGeometry.h:40
unsigned int numberOfShapes() const override
Definition: HcalGeometry.h:42
Detector
Definition: DetId.h:24
CaloCellGeometry::CCGFloat CCGFloat
Definition: HcalGeometry.h:29
unsigned int getHxSize(const int type) const
CaloCellGeometry::Pt3DVec Pt3DVec
HepGeom::Point3D< CCGFloat > Pt3D
std::vector< IdealObliquePrism > HBCellVec
Definition: HcalGeometry.h:24
HECellVec m_heCellVec
Definition: HcalGeometry.h:155
void increaseReserve(unsigned int extra)
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
Definition: HcalGeometry.h:150
GlobalPoint getPosition(const DetId &id) const
virtual CellPtr cellGeomPtr(uint32_t index) const
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:71
static unsigned int alignmentForwardIndexLocal(const DetId &id)
HcalDetId DetIdType
Definition: HcalGeometry.h:36
CaloCellGeometryPtr getGeometryRawPtr(uint32_t index) const override
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:77
const HcalTopology & topology() const
Definition: HcalGeometry.h:111