Go to the documentation of this file.00001 #include "Geometry/CaloGeometry/interface/IdealObliquePrism.h"
00002 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
00003 #include "Geometry/CaloGeometry/interface/CaloGenericDetId.h"
00004 #include "Geometry/HcalTowerAlgo/interface/CaloTowerGeometry.h"
00005
00006 CaloTowerGeometry::CaloTowerGeometry() {
00007 }
00008
00009
00010 CaloTowerGeometry::~CaloTowerGeometry() {}
00011
00012
00013 unsigned int
00014 CaloTowerGeometry::alignmentTransformIndexLocal( const DetId& id )
00015 {
00016 const CaloGenericDetId gid ( id ) ;
00017
00018 assert( gid.isCaloTower() ) ;
00019
00020 const CaloTowerDetId cid ( id ) ;
00021
00022 const unsigned int iea ( cid.ietaAbs() ) ;
00023
00024 const unsigned int ip ( ( cid.iphi() - 1 )/4 ) ;
00025
00026 const int izoff ( ( cid.zside() + 1 )/2 ) ;
00027
00028 const unsigned int offset ( izoff*3*18) ;
00029
00030 return ( offset + ip + ( CaloTowerDetId::kEndIEta < iea ? 36 :
00031 ( CaloTowerDetId::kBarIEta < iea ? 18 : 0 ) ) ) ;
00032 }
00033
00034 unsigned int
00035 CaloTowerGeometry::alignmentTransformIndexGlobal( const DetId& id )
00036 {
00037 return (unsigned int) DetId::Calo - 1 ;
00038 }
00039
00040 std::vector<HepGeom::Point3D<double> >
00041 CaloTowerGeometry::localCorners( const double* pv,
00042 unsigned int i,
00043 HepGeom::Point3D<double> & ref )
00044 {
00045 return ( calogeom::IdealObliquePrism::localCorners( pv, ref ) ) ;
00046 }
00047
00048 CaloCellGeometry*
00049 CaloTowerGeometry::newCell( const GlobalPoint& f1 ,
00050 const GlobalPoint& f2 ,
00051 const GlobalPoint& f3 ,
00052 CaloCellGeometry::CornersMgr* mgr,
00053 const double* parm ,
00054 const DetId& detId )
00055 {
00056 const CaloGenericDetId cgid ( detId ) ;
00057
00058 assert( cgid.isCaloTower() ) ;
00059
00060 return ( new calogeom::IdealObliquePrism( f1, mgr, parm ) ) ;
00061 }