CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalDDDGeometry.h
Go to the documentation of this file.
1 #ifndef Geometry_HcalTowerAlgo_HcalDDDGeometry_h
2 #define Geometry_HcalTowerAlgo_HcalDDDGeometry_h
3 
13 #include <atomic>
14 
16 
17 public:
18 
19  typedef std::vector<IdealObliquePrism> HBCellVec ;
20  typedef std::vector<IdealObliquePrism> HECellVec ;
21  typedef std::vector<IdealObliquePrism> HOCellVec ;
22  typedef std::vector<IdealZPrism> HFCellVec ;
23 
24  explicit HcalDDDGeometry(const HcalTopology& theTopo);
26  virtual ~HcalDDDGeometry();
27 
28  virtual const std::vector<DetId>& getValidDetIds( DetId::Detector det = DetId::Detector ( 0 ) ,
29  int subdet = 0 ) const;
30 
31  virtual DetId getClosestCell(const GlobalPoint& r) const ;
32 
33  int insertCell (std::vector<HcalCellType> const & );
34 
35  virtual void newCell( const GlobalPoint& f1 ,
36  const GlobalPoint& f2 ,
37  const GlobalPoint& f3 ,
38  const CCGFloat* parm,
39  const DetId& detId ) ;
40 
41 protected:
42 
43  virtual const CaloCellGeometry* cellGeomPtr( uint32_t index ) const ;
44 
45 private:
46 
47  void fillDetIds() const ;
48 
49  std::vector<HcalCellType> hcalCells_;
50  CMS_THREAD_GUARD(m_filledDetIds) mutable std::vector<DetId> m_hbIds ;
51  CMS_THREAD_GUARD(m_filledDetIds) mutable std::vector<DetId> m_heIds ;
52  CMS_THREAD_GUARD(m_filledDetIds) mutable std::vector<DetId> m_hoIds ;
53  CMS_THREAD_GUARD(m_filledDetIds) mutable std::vector<DetId> m_hfIds ;
55 
57  double etaMax_;
58 
63  mutable std::atomic<bool> m_filledDetIds;
64 };
65 
66 #endif
67 
std::vector< IdealObliquePrism > HBCellVec
virtual const CaloCellGeometry * cellGeomPtr(uint32_t index) const
std::vector< IdealObliquePrism > HOCellVec
std::vector< DetId > m_hfIds
std::vector< IdealZPrism > HFCellVec
std::vector< DetId > m_heIds
std::atomic< bool > m_filledDetIds
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
CaloCellGeometry::CCGFloat CCGFloat
virtual ~HcalDDDGeometry()
The HcalDDDGeometry will delete all its cell geometries at destruction time.
std::vector< IdealObliquePrism > HECellVec
const HcalTopology & topo_
int insertCell(std::vector< HcalCellType > const &)
HcalDDDGeometry(const HcalTopology &theTopo)
std::vector< HcalCellType > hcalCells_
std::vector< DetId > m_hbIds
HBCellVec m_hbCellVec
Definition: DetId.h:18
void fillDetIds() const
std::vector< DetId > m_emptyIds
HECellVec m_heCellVec
Detector
Definition: DetId.h:24
HFCellVec m_hfCellVec
string const
Definition: compareJSON.py:14
virtual const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const
Get a list of valid detector ids (for the given subdetector)
HOCellVec m_hoCellVec
#define CMS_THREAD_GUARD(_var_)
virtual DetId getClosestCell(const GlobalPoint &r) const
std::vector< DetId > m_hoIds