14 extTopology ( theTopology )
36 std::unique_ptr<CaloSubdetectorGeometry>
49 std::unique_ptr<CaloSubdetectorGeometry>
52 std::unique_ptr<CaloSubdetectorGeometry> hg
68 CastorGeometry::k_NumberOfParametersPerShape ) ;
71 std::vector<HcalCastorDetId> castorIds ;
76 for(
int imodule ( firstCell ) ; imodule <= lastCell ; ++imodule )
78 for(
int isector ( 1 ) ;
91 for( std::vector<HcalCastorDetId>::const_iterator
92 castorIdItr ( castorIds.begin() ) ;
93 castorIdItr != castorIds.end() ; ++castorIdItr )
106 const int isect ( detId.
sector() ) ;
107 const double sector ( 1.0*isect ) ;
112 const double sign ( 0 == isect%2 ? -1 : 1 ) ;
116 static const double an ( atan( 1.));
117 static const double can (
cos( an ));
118 static const double san (
sin( an ));
119 static const double dxlEM ( 1.55/2. ) ;
120 static const double dxhEM ( 5.73/2. ) ;
121 static const double dhEM ( 14.26/2. );
122 static const double dR ( 0.1 + 2.*dhEM*san*dxlEM/( dxhEM-dxlEM ) ) ;
123 static const double dhHAD ( 19.88/2. );
125 static const double dxhHAD ( dxhEM*( 2.*dhHAD*san + dR )/
126 ( 2.*dhEM*san + dR ) ) ;
127 static const double zm ( 1439.0 ) ;
128 static const double dzEM ( 5.45/2 ) ;
129 static const double dzHAD ( 10.075/2 ) ;
133 const double dxl ( sign*dxlEM ) ;
142 const double delz ( dh*can ) ;
143 const double dy ( dh*san ) ;
144 const double dx ( ( dxl + dxh )/2. ) ;
145 const double leg ( dR + dy ) ;
146 const double len (
sqrt( leg*leg + dx*dx ) ) ;
148 static const double dphi
151 const double fphi ( atan( dx/( dR + dy ) ) ) ;
153 const double phi ( 0==isect%2 ? (sector-1.)*dphi - fphi :
154 sector*dphi - fphi ) ;
156 const double sphi (
sin( phi ) ) ;
157 const double cphi (
cos( phi ) ) ;
159 const double xc ( len*cphi ) ;
160 const double yc ( len*sphi ) ;
161 const double zc (
zside*( zm + delz +
163 4.*dzEM + ( 1.*(
module-2) - 1 )*2.*dzHAD ) ) ) ;
167 std::vector<CCGFloat>
zz ;
169 zz.emplace_back( dxl ) ;
170 zz.emplace_back( dxh ) ;
171 zz.emplace_back( dh ) ;
172 zz.emplace_back( dz ) ;
173 zz.emplace_back( an ) ;
174 zz.emplace_back( dR ) ;
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)
CaloCellGeometry::CCGFloat CCGFloat
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)
CastorTopology * theTopology
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::unique_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