25 std::cout <<
"CaloTowerHardcodeGeometryLoader: theHBHEEtaBounds = ";
27 std::cout << std::endl;
30 std::cout <<
"CaloTowerHardcodeGeometryLoader: HcalTopology: firstHBRing = " << hcaltopo->
firstHBRing() <<
", lastHBRing = " << hcaltopo->
lastHBRing() <<
", firstHERing = " << hcaltopo->
firstHERing() <<
", lastHERing = " << hcaltopo->
lastHERing() <<
", firstHFRing = " << hcaltopo->
firstHFRing() <<
", lastHFRing = " << hcaltopo->
lastHFRing() << std::endl;
46 return std::unique_ptr<CaloSubdetectorGeometry>(
geom);
52 const double EBradius = 143.0;
53 const double HOradius = 406.0+1.0;
54 const double EEz = 320.0;
55 const double HEz = 568.0;
56 const double HFz = 1100.0;
57 const double HFthick = 165;
67 int sign=(ieta>0)?(1):(-1);
71 std::cout <<
"CaloTowerHardcodeGeometryLoader: ieta = " << ieta <<
", iphi = " << iphi <<
", etaRing = " << etaRing << std::endl;
81 double eta = 0.5*(eta1+eta2);
82 double deta = (eta2-eta1);
88 double phi_low = dphi_nominal*(iphi-1);
89 double phi = phi_low+dphi_half;
92 std::cout <<
"CaloTowerHardcodeGeometryLoader: eta1 = " << eta1 <<
", eta2 = " << eta2 <<
", eta = " << eta <<
", phi = " << phi << std::endl;
95 double x,
y,
z,thickness;
102 thickness=HFthick/tanh(eta);
105 double r=z/sinh(eta);
108 thickness=(HEz-EEz)/tanh(eta);
110 x=EBradius *
cos(phi);
111 y=EBradius *
sin(phi);
113 z=EBradius * sinh(eta);
114 thickness=(HOradius-EBradius) * cosh(eta);
120 const double mysign ( !alongZ ? 1 : -1 ) ;
121 std::vector<CCGFloat> hh ;
123 hh.emplace_back( deta/2 ) ;
124 hh.emplace_back( dphi_half ) ;
125 hh.emplace_back( mysign*thickness/2. ) ;
127 hh.emplace_back( fabs( eta ) ) ;
128 hh.emplace_back( fabs( z ) ) ;
131 std::cout <<
"CaloTowerHardcodeGeometryLoader: x = " << x <<
", y = " << y <<
", z = " << z <<
", thickness = " << thickness << std::endl;
134 geom->
newCell( point, point, point,
const CaloTowerTopology * m_limits
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 numberOfShapes() const override
CaloCellGeometry::CCGFloat CCGFloat
void allocatePar(ParVec::size_type n, unsigned int m)
unsigned int numberOfParametersPerShape() const override
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)
static const CCGFloat * getParmPtr(const std::vector< CCGFloat > &vd, ParMgr *mgr, ParVecVec &pvv)
std::vector< double > theHFEtaBounds
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