CMS 3D CMS Logo

CaloTowerGeometry.h
Go to the documentation of this file.
1 #ifndef GEOMETRY_HCALTOWERALGO_CALOTOWERGEOMETRY_H
2 #define GEOMETRY_HCALTOWERALGO_CALOTOWERGEOMETRY_H 1
3 
9 
17 {
18  public:
19 
20  typedef std::vector<IdealObliquePrism> CellVec ;
21 
25 
30 
31  //enum { k_NumberOfCellsForCorners = CaloTowerDetId::kSizeForDenseIndexing } ;
32 
33  //enum { k_NumberOfShapes = 41 } ;
34 
36 
37  static std::string dbString() { return "PCaloTowerRcd" ; }
38 
39  virtual unsigned int numberOfShapes() const { return k_NumberOfShapes ; }
40  virtual unsigned int numberOfParametersPerShape() const { return k_NumberOfParametersPerShape ; }
41  virtual unsigned int numberOfCellsForCorners() const { return k_NumberOfCellsForCorners ; }
42 
43 
44  CaloTowerGeometry(const CaloTowerTopology *cttopo_);
45  virtual ~CaloTowerGeometry();
46 
47  static std::string producerTag() { return "TOWER" ; }
48 
49  static unsigned int numberOfAlignments() { return 0 ; }
50 
51  //static unsigned int alignmentTransformIndexLocal( const DetId& id ) ;
52  unsigned int alignmentTransformIndexLocal( const DetId& id ) ;
53 
54  //static unsigned int alignmentTransformIndexGlobal( const DetId& id ) ;
55  unsigned int alignmentTransformIndexGlobal( const DetId& id ) ;
56 
57  static void localCorners( Pt3DVec& lc ,
58  const CCGFloat* pv ,
59  unsigned int i ,
60  Pt3D& ref ) ;
61 
62  virtual void newCell( const GlobalPoint& f1 ,
63  const GlobalPoint& f2 ,
64  const GlobalPoint& f3 ,
65  const CCGFloat* parm,
66  const DetId& detId ) ;
67 
68  virtual const CaloCellGeometry* getGeometry( const DetId& id ) const {
69  return cellGeomPtr( cttopo->denseIndex(id) ) ;
70  }
71 
72  virtual void getSummary( CaloSubdetectorGeometry::TrVec& trVector,
75  CaloSubdetectorGeometry::IVec& dinsVector ) const ;
76 
77  protected:
78 
79  virtual const CaloCellGeometry* cellGeomPtr( uint32_t index ) const ;
80  virtual unsigned int indexFor(const DetId& id) const { return cttopo->denseIndex(id); }
81  virtual unsigned int sizeForDenseIndex(const DetId& id) const { return cttopo->sizeForDenseIndexing(); }
82 
83  private:
87  CellVec m_cellVec ;
89 };
90 
91 #endif
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
CaloTowerDetId DetIdType
std::vector< CCGFloat > DimVec
CaloTowerGeometry(const CaloTowerTopology *cttopo_)
CaloTowerGeometryRecord AlignedRecord
CaloTowerAlignmentRcd AlignmentRecord
virtual unsigned int numberOfCellsForCorners() const
std::vector< unsigned int > IVec
std::vector< CCGFloat > TrVec
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)
std::vector< Pt3D > Pt3DVec
unsigned int alignmentTransformIndexLocal(const DetId &id)
static std::string producerTag()
virtual unsigned int numberOfParametersPerShape() const
CaloCellGeometry::CCGFloat CCGFloat
CaloCellGeometry::Pt3D Pt3D
static std::string dbString()
def pv(vc)
Definition: MetAnalyzer.py:6
const CaloTowerTopology * cttopo
CaloSubdetectorGeometry::IVec m_dins
unsigned int alignmentTransformIndexGlobal(const DetId &id)
uint32_t denseIndex(const DetId &id) const
static void localCorners(Pt3DVec &lc, const CCGFloat *pv, unsigned int i, Pt3D &ref)
Definition: DetId.h:18
HepGeom::Point3D< CCGFloat > Pt3D
std::vector< IdealObliquePrism > CellVec
virtual unsigned int numberOfShapes() const
virtual ~CaloTowerGeometry()
CaloCellGeometry::Pt3DVec Pt3DVec
virtual unsigned int sizeForDenseIndex(const DetId &id) const
PCaloTowerRcd PGeometryRecord
virtual void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const
uint32_t sizeForDenseIndexing() const
virtual unsigned int indexFor(const DetId &id) const
virtual const CaloCellGeometry * cellGeomPtr(uint32_t index) const
static unsigned int numberOfAlignments()