90 std::vector<HcalDetId> hcalIds;
91 int nDepthSegments, startingDepthSegment;
92 for(
int etaRing = firstEtaRing; etaRing <= lastEtaRing; ++etaRing) {
95 unsigned int phiInc=72/
std::max(36u,nPhiBins);
96 for(
int idepth = 0; idepth < nDepthSegments; ++idepth) {
97 int depthBin = startingDepthSegment + idepth;
99 for(
unsigned iphi = 1; iphi <= 72; iphi+=phiInc) {
100 for(
int zsign = -1; zsign <= 1; zsign += 2) {
101 HcalDetId id( subdet, zsign * etaRing, iphi, depthBin);
108 edm::LogInfo(
"HcalHardcodeGeometry") <<
"Number of HCAL DetIds made: "
110 <<
" " << hcalIds.size();
112 for(std::vector<HcalDetId>::const_iterator hcalIdItr = hcalIds.begin();
113 hcalIdItr != hcalIds.end(); ++hcalIdItr)
135 else if (etaRing==28 && detId.
depth()==3)
146 double eta = 0.5*(eta1+eta2) * detId.
zside();
147 double deta = 0.5*(eta2-eta1);
150 int nDepthBins, startingBin;
157 double phi_low = dphi_nominal*(detId.
iphi()-1);
158 double phi = phi_low+dphi_half;
171 if (detId.
depth()==1)
184 if (detId.
depth()==1)
207 thickness *= cosh(eta);
219 else if (nDepthBins==2 && depth==2)
232 thickness /= fabs(tanh(eta));
248 std::vector<CCGFloat>
hp ;
253 hp.push_back( deta ) ;
254 hp.push_back( dphi_half ) ;
255 hp.push_back( thickness/2 ) ;
256 hp.push_back( fabs( point.
eta() ) ) ;
257 hp.push_back( fabs( point.
z() ) ) ;
261 const double mysign ( isBarrel ? 1 : -1 ) ;
262 hp.push_back( deta ) ;
263 hp.push_back( dphi_half ) ;
264 hp.push_back( mysign*thickness/2. ) ;
265 hp.push_back( fabs( point.
eta() ) ) ;
266 hp.push_back( fabs( point.
z() ) ) ;
268 geom->
newCell( point, point, point,
HcalSubdetector subdet() const
get the subdetector
const HcalTopology * extTopology
int zside() const
get the z-side of the cell (1/-1)
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)=0
bool isBarrel(GeomDetEnumerators::SubDetector m)
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
double theta_from_eta(double eta)
int nPhiBins(int etaRing) const
how many phi segments in this ring
void allocatePar(ParVec::size_type n, unsigned int m)
HcalHardcodeGeometryLoader(const HcalTopology &ht)
int depth() const
get the tower depth
virtual unsigned int numberOfShapes() const
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
CaloCellGeometry::CCGFloat CCGFloat
void depthBinInformation(HcalSubdetector subdet, int etaRing, int &nDepthBins, int &startingBin) const
finds the number of depth bins and which is the number to start with
static const CCGFloat * getParmPtr(const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
int ietaAbs() const
get the absolute value of the cell ieta
int iphi() const
get the cell iphi
void fill(HcalSubdetector subdet, int firstEtaRing, int lastEtaRing, ReturnType cg)
static const double theHFEtaBounds[]
CaloCellGeometry::CornersMgr * cornersMgr()
virtual bool valid(const DetId &id) const
void makeCell(const HcalDetId &detId, ReturnType geom) const
ReturnType load()
Load all of HCAL.
void allocateCorners(CaloCellGeometry::CornersVec::size_type n)
static const double theHBHEEtaBounds[]
virtual unsigned int ncells() const
return a count of valid cells (for dense indexing use)
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point