CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/Geometry/HcalTowerAlgo/src/CaloTowerGeometry.cc

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 }