CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 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  const CaloCellGeometry* getGeometryRawPtr(uint32_t index) const override;
119 
120 private:
121  // Base clas for getting geometry
122  std::shared_ptr<const CaloCellGeometry> getGeometryBase(const DetId& id) const {
124  }
125 
126  //returns din
127  unsigned int newCellImpl(
128  const GlobalPoint& f1, const GlobalPoint& f2, const GlobalPoint& f3, const CCGFloat* parm, const DetId& detId);
129 
130  //can only be used by friend classes, to ensure sorting is done at the end
131  void newCellFast(
132  const GlobalPoint& f1, const GlobalPoint& f2, const GlobalPoint& f3, const CCGFloat* parm, const DetId& detId);
133 
134  void increaseReserve(unsigned int extra);
135  void sortValidIds();
136 
137  void fillDetIds() const;
138 
139  void init();
140 
142  int etaRing(HcalSubdetector bc, double abseta) const;
143  int phiBin(HcalSubdetector bc, int etaring, double phi) const;
144  DetId correctId(const DetId& id) const;
145 
148 
155 
160 };
161 
162 #endif
static unsigned int numberOfBarrelAlignments()
Definition: HcalGeometry.h:67
static unsigned int alignmentTransformIndexLocal(const DetId &id)
std::vector< CCGFloat > DimVec
edm::AtomicPtrCache< std::vector< DetId > > m_heIds
Definition: HcalGeometry.h:150
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)
unsigned int getHxSize(const int type) const
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:146
std::vector< unsigned int > IVec
edm::AtomicPtrCache< std::vector< DetId > > m_emptyIds
Definition: HcalGeometry.h:153
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
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:89
HcalAlignmentRcd AlignmentRecord
Definition: HcalGeometry.h:33
std::vector< IdealObliquePrism > HECellVec
Definition: HcalGeometry.h:25
std::vector< Pt3D > Pt3DVec
bool m_mergePosition
Definition: HcalGeometry.h:147
const HcalTopology & topology() const
Definition: HcalGeometry.h:111
std::shared_ptr< const CaloCellGeometry > getGeometryBase(const DetId &id) const
Definition: HcalGeometry.h:122
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:156
PHcalRcd PGeometryRecord
Definition: HcalGeometry.h:35
HOCellVec m_hoCellVec
Definition: HcalGeometry.h:158
void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
unsigned int getNumberOfShapes() const
Definition: HcalTopology.h:161
HFCellVec m_hfCellVec
Definition: HcalGeometry.h:159
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()
DetId correctId(const DetId &id) const
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)
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:154
HcalGeometry(const HcalTopology &topology)
Definition: HcalGeometry.cc:17
HcalGeometryRecord AlignedRecord
Definition: HcalGeometry.h:34
unsigned int ncells() const override
return a count of valid cells (for dense indexing use)
GlobalPoint getPosition(const DetId &id) const
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.
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:22
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
CaloCellGeometry::CornersVec getCorners(const DetId &id) const
CaloCellGeometry::Pt3DVec Pt3DVec
HepGeom::Point3D< CCGFloat > Pt3D
std::vector< IdealObliquePrism > HBCellVec
Definition: HcalGeometry.h:24
HECellVec m_heCellVec
Definition: HcalGeometry.h:157
const CaloCellGeometry * getGeometryRawPtr(uint32_t index) const override
void increaseReserve(unsigned int extra)
edm::AtomicPtrCache< std::vector< DetId > > m_hfIds
Definition: HcalGeometry.h:152
void fillDetIds() const
Definition: HcalGeometry.cc:40
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)
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:151
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:149
static unsigned int numberOfAlignments()
Definition: HcalGeometry.h:77