13 extTopology ( theTopology )
35 std::auto_ptr<CaloSubdetectorGeometry>
48 std::auto_ptr<CaloSubdetectorGeometry>
51 std::auto_ptr<CaloSubdetectorGeometry> hg
67 CastorGeometry::k_NumberOfParametersPerShape ) ;
70 std::vector<HcalCastorDetId> castorIds ;
75 for(
int imodule ( firstCell ) ; imodule <= lastCell ; ++imodule )
77 for(
int isector ( 1 ) ;
90 for( std::vector<HcalCastorDetId>::const_iterator
91 castorIdItr ( castorIds.begin() ) ;
92 castorIdItr != castorIds.end() ; ++castorIdItr )
105 const int isect ( detId.
sector() ) ;
106 const double sector ( 1.0*isect ) ;
111 const double sign ( 0 == isect%2 ? -1 : 1 ) ;
115 static const double an ( atan( 1.));
116 static const double can (
cos( an ));
117 static const double san (
sin( an ));
118 static const double dxlEM ( 1.55/2. ) ;
119 static const double dxhEM ( 5.73/2. ) ;
120 static const double dhEM ( 14.26/2. );
121 static const double dR ( 0.1 + 2.*dhEM*san*dxlEM/( dxhEM-dxlEM ) ) ;
122 static const double dhHAD ( 19.88/2. );
124 static const double dxhHAD ( dxhEM*( 2.*dhHAD*san + dR )/
125 ( 2.*dhEM*san + dR ) ) ;
126 static const double zm ( 1439.0 ) ;
127 static const double dzEM ( 5.45/2 ) ;
128 static const double dzHAD ( 10.075/2 ) ;
132 const double dxl ( sign*dxlEM ) ;
141 const double delz ( dh*can ) ;
142 const double dy ( dh*san ) ;
143 const double dx ( ( dxl + dxh )/2. ) ;
144 const double leg ( dR + dy ) ;
145 const double len (
sqrt( leg*leg + dx*dx ) ) ;
147 static const double dphi
150 const double fphi ( atan( dx/( dR + dy ) ) ) ;
152 const double phi ( 0==isect%2 ? (sector-1.)*dphi - fphi :
153 sector*dphi - fphi ) ;
155 const double sphi (
sin( phi ) ) ;
156 const double cphi (
cos( phi ) ) ;
158 const double xc ( len*cphi ) ;
159 const double yc ( len*sphi ) ;
160 const double zc (
zside*( zm + delz +
162 4.*dzEM + ( 1.*(
module-2) - 1 )*2.*dzHAD ) ) ) ;
166 std::vector<CCGFloat> zz ;
168 zz.push_back( dxl ) ;
169 zz.push_back( dxh ) ;
const CastorTopology * extTopology
int sector() const
get the sector (1-16)
CastorHardcodeGeometryLoader()
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)=0
Sin< T >::type sin(const T &t)
int module() const
get the module (1-2 for EM, 1-12 for HAD)
void makeCell(const HcalCastorDetId &detId, CaloSubdetectorGeometry *geom) const
Section section() const
get the section
void allocatePar(ParVec::size_type n, unsigned int m)
static const double dYHADPlate
void fill(HcalCastorDetId::Section section, CaloSubdetectorGeometry *cg)
Cos< T >::type cos(const T &t)
int zside() const
get the z-side of the cell (1/-1)
CaloCellGeometry::CCGFloat CCGFloat
static const double dXHADPlate
static const CCGFloat * getParmPtr(const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
static const int SubdetectorId
virtual bool valid(const HcalCastorDetId &id) const
std::auto_ptr< CaloSubdetectorGeometry > load()
static const double dYEMPlate
CaloCellGeometry::CornersMgr * cornersMgr()
static const double dXEMPlate
int firstCell(HcalCastorDetId::Section section) const
void allocateCorners(CaloCellGeometry::CornersVec::size_type n)
int lastCell(HcalCastorDetId::Section section) const