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  unsigned int numberOfShapes() const override { return k_NumberOfShapes ; }
40  unsigned int numberOfParametersPerShape() const override { return k_NumberOfParametersPerShape ; }
41  virtual unsigned int numberOfCellsForCorners() const { return k_NumberOfCellsForCorners ; }
42 
43 
44  CaloTowerGeometry(const CaloTowerTopology *cttopo_);
45  ~CaloTowerGeometry() override;
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  void newCell( const GlobalPoint& f1 ,
63  const GlobalPoint& f2 ,
64  const GlobalPoint& f3 ,
65  const CCGFloat* parm,
66  const DetId& detId ) override ;
67 
68  const CaloCellGeometry* getGeometry( const DetId& id ) const override {
69  return cellGeomPtr( cttopo->denseIndex(id) ) ;
70  }
71 
75  CaloSubdetectorGeometry::IVec& dinsVector ) const override ;
76 
77  protected:
78 
79  const CaloCellGeometry* cellGeomPtr( uint32_t index ) const override ;
80  unsigned int indexFor(const DetId& id) const override { return cttopo->denseIndex(id); }
81  unsigned int sizeForDenseIndex(const DetId& id) const override { return cttopo->sizeForDenseIndexing(); }
82 
83  private:
87  CellVec m_cellVec ;
89 };
90 
91 #endif
CaloTowerDetId DetIdType
std::vector< CCGFloat > DimVec
CaloTowerGeometry(const CaloTowerTopology *cttopo_)
CaloTowerGeometryRecord AlignedRecord
CaloTowerAlignmentRcd AlignmentRecord
unsigned int indexFor(const DetId &id) const override
virtual unsigned int numberOfCellsForCorners() const
std::vector< unsigned int > IVec
unsigned int numberOfShapes() const override
std::vector< CCGFloat > TrVec
std::vector< Pt3D > Pt3DVec
unsigned int alignmentTransformIndexLocal(const DetId &id)
const CaloCellGeometry * cellGeomPtr(uint32_t index) const override
~CaloTowerGeometry() override
static std::string producerTag()
unsigned int numberOfParametersPerShape() const override
void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId) override
void getSummary(CaloSubdetectorGeometry::TrVec &trVector, CaloSubdetectorGeometry::IVec &iVector, CaloSubdetectorGeometry::DimVec &dimVector, CaloSubdetectorGeometry::IVec &dinsVector) const override
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)
unsigned int sizeForDenseIndex(const DetId &id) const override
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
const CaloCellGeometry * getGeometry(const DetId &id) const override
Get the cell geometry of a given detector id. Should return false if not found.
CaloCellGeometry::Pt3DVec Pt3DVec
PCaloTowerRcd PGeometryRecord
uint32_t sizeForDenseIndexing() const
static unsigned int numberOfAlignments()