27 std::ostringstream st1;
28 st1 <<
"CaloTowerHardcodeGeometryLoader: theHBHEEtaBounds = ";
34 edm::LogVerbatim(
"HCalGeom") <<
"CaloTowerHardcodeGeometryLoader: HcalTopology: firstHBRing = "
39 <<
", lastHFRing = " << hcaltopo->
lastHFRing();
46 if (
nullptr == geom->
parMgr())
54 return std::unique_ptr<CaloSubdetectorGeometry>(
geom);
58 const double EBradius = 143.0;
59 const double HOradius = 406.0 + 1.0;
60 const double EEz = 320.0;
61 const double HEz = 568.0;
62 const double HFz = 1100.0;
63 const double HFthick = 165;
73 int sign = (ieta > 0) ? (1) : (-1);
77 edm::LogVerbatim(
"HCalGeom") <<
"CaloTowerHardcodeGeometryLoader: ieta = " << ieta <<
", iphi = " << iphi
78 <<
", etaRing = " << etaRing;
88 double eta = 0.5 * (eta1 +
eta2);
89 double deta = (eta2 -
eta1);
95 double phi_low = dphi_nominal * (iphi - 1);
96 double phi = phi_low + dphi_half;
99 edm::LogVerbatim(
"HCalGeom") <<
"CaloTowerHardcodeGeometryLoader: eta1 = " << eta1 <<
", eta2 = " << eta2
100 <<
", eta = " << eta <<
", phi = " <<
phi;
107 double r = z / sinh(eta);
110 thickness = HFthick / tanh(eta);
113 double r = z / sinh(eta);
116 thickness = (HEz - EEz) / tanh(eta);
118 x = EBradius *
cos(phi);
119 y = EBradius *
sin(phi);
121 z = EBradius * sinh(eta);
122 thickness = (HOradius - EBradius) * cosh(eta);
128 const double mysign(!alongZ ? 1 : -1);
129 std::vector<CCGFloat>
hh;
131 hh.emplace_back(deta / 2);
132 hh.emplace_back(dphi_half);
133 hh.emplace_back(mysign * thickness / 2.);
135 hh.emplace_back(fabs(eta));
136 hh.emplace_back(fabs(z));
139 edm::LogVerbatim(
"HCalGeom") <<
"CaloTowerHardcodeGeometryLoader: x = " << x <<
", y = " << y <<
", z = " << z
Log< level::Info, true > LogVerbatim
const CaloTowerTopology * m_limits
unsigned int numberOfShapes() const override
virtual unsigned int numberOfCellsForCorners() const
virtual void newCell(const GlobalPoint &f1, const GlobalPoint &f2, const GlobalPoint &f3, const CCGFloat *parm, const DetId &detId)=0
std::unique_ptr< CaloSubdetectorGeometry > load(const CaloTowerTopology *limits, const HcalTopology *hcaltopo, const HcalDDDRecConstants *hcons)
Sin< T >::type sin(const T &t)
const std::vector< double > & getEtaTableHF() const
int nPhiBins(int etaRing) const
how many phi segments in this ring
unsigned int numberOfParametersPerShape() const override
void allocatePar(ParVec::size_type n, unsigned int m)
CaloTowerDetId detIdFromDenseIndex(uint32_t din) const
const HcalTopology * m_hcaltopo
Cos< T >::type cos(const T &t)
std::vector< double > theHBHEEtaBounds
Abs< T >::type abs(const T &t)
CaloCellGeometry::CCGFloat CCGFloat
static const CCGFloat * getParmPtr(const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
std::vector< double > theHFEtaBounds
Log< level::Info, false > LogInfo
CaloCellGeometry::CornersMgr * cornersMgr()
const std::vector< double > & getEtaTable() const
void makeCell(uint32_t din, CaloSubdetectorGeometry *geom) const
int convertCTtoHcal(int ct_ieta) const
void allocateCorners(CaloCellGeometry::CornersVec::size_type n)
int ieta() const
get the tower ieta
const HcalDDDRecConstants * m_hcons
uint32_t sizeForDenseIndexing() const
*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