11 const int MAX_HCAL_PHI = 72;
12 const double DEGREE2RAD =
M_PI / 180.;
16 struct HBHOCellParameters {
17 HBHOCellParameters (
int f_eta,
int f_depth,
int f_phiFirst,
int f_phiStep,
int f_dPhi,
float f_rMin,
float f_rMax,
float f_etaMin,
float f_etaMax)
18 :
eta(f_eta), depth(f_depth), phiFirst(f_phiFirst), phiStep(f_phiStep), dphi(f_dPhi), rMin(f_rMin), rMax(f_rMax),
etaMin(f_etaMin),
etaMax(f_etaMax)
32 struct HECellParameters {
33 HECellParameters (
int f_eta,
int f_depth,
int f_phiFirst,
int f_phiStep,
int f_dPhi,
float f_zMin,
float f_zMax,
float f_etaMin,
float f_etaMax)
34 :
eta(f_eta), depth(f_depth), phiFirst(f_phiFirst), phiStep(f_phiStep), dphi(f_dPhi), zMin(f_zMin), zMax(f_zMax),
etaMin(f_etaMin),
etaMax(f_etaMax)
48 struct HFCellParameters {
49 HFCellParameters (
int f_eta,
int f_depth,
int f_phiFirst,
int f_phiStep,
int f_dPhi,
float f_zMin,
float f_zMax,
float f_rMin,
float f_rMax)
50 :
eta(f_eta), depth(f_depth), phiFirst(f_phiFirst), phiStep(f_phiStep), dphi(f_dPhi), zMin(f_zMin), zMax(f_zMax), rMin(f_rMin), rMax(f_rMax)
67 std::vector <HBHOCellParameters> makeHBCells () {
68 const float HBRMIN = 181.1;
69 const float HBRMAX = 288.8;
71 HBHOCellParameters cells [] = {
73 HBHOCellParameters ( 1, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*0, 0.087*1),
74 HBHOCellParameters ( 2, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*1, 0.087*2),
75 HBHOCellParameters ( 3, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*2, 0.087*3),
76 HBHOCellParameters ( 4, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*3, 0.087*4),
77 HBHOCellParameters ( 5, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*4, 0.087*5),
78 HBHOCellParameters ( 6, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*5, 0.087*6),
79 HBHOCellParameters ( 7, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*6, 0.087*7),
80 HBHOCellParameters ( 8, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*7, 0.087*8),
81 HBHOCellParameters ( 9, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*8, 0.087*9),
82 HBHOCellParameters (10, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*9, 0.087*10),
83 HBHOCellParameters (11, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*10, 0.087*11),
84 HBHOCellParameters (12, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*11, 0.087*12),
85 HBHOCellParameters (13, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*12, 0.087*13),
86 HBHOCellParameters (14, 1, 1, 1, 5, HBRMIN, HBRMAX, 0.087*13, 0.087*14),
87 HBHOCellParameters (15, 1, 1, 1, 5, HBRMIN, 258.4, 0.087*14, 0.087*15),
88 HBHOCellParameters (15, 2, 1, 1, 5, 258.4, HBRMAX, 0.087*14, 0.087*15),
89 HBHOCellParameters (16, 1, 1, 1, 5, HBRMIN, 190.4, 0.087*15, 0.087*16),
90 HBHOCellParameters (16, 2, 1, 1, 5, 190.4, 232.6, 0.087*15, 0.087*16)
92 int nCells =
sizeof(cells)/
sizeof(HBHOCellParameters);
93 std::vector <HBHOCellParameters>
result;
94 result.reserve (nCells);
95 for (
int i = 0;
i < nCells; ++
i) result.push_back (cells[
i]);
100 std::vector <HBHOCellParameters> makeHOCells () {
101 const float HORMIN0 = 390.0;
102 const float HORMIN1 = 412.6;
103 const float HORMAX = 413.6;
105 HBHOCellParameters cells [] = {
107 HBHOCellParameters ( 1, 4, 1, 1, 5, HORMIN0, HORMAX, 0.087*0, 0.087*1),
108 HBHOCellParameters ( 2, 4, 1, 1, 5, HORMIN0, HORMAX, 0.087*1, 0.087*2),
109 HBHOCellParameters ( 3, 4, 1, 1, 5, HORMIN0, HORMAX, 0.087*2, 0.087*3),
110 HBHOCellParameters ( 4, 4, 1, 1, 5, HORMIN0, HORMAX, 0.087*3, 0.3075),
111 HBHOCellParameters ( 5, 4, 1, 1, 5, HORMIN1, HORMAX, 0.3395, 0.087*5),
112 HBHOCellParameters ( 6, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*5, 0.087*6),
113 HBHOCellParameters ( 7, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*6, 0.087*7),
114 HBHOCellParameters ( 8, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*7, 0.087*8),
115 HBHOCellParameters ( 9, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*8, 0.087*9),
116 HBHOCellParameters (10, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*9, 0.8494),
117 HBHOCellParameters (11, 4, 1, 1, 5, HORMIN1, HORMAX, 0.873, 0.087*11),
118 HBHOCellParameters (12, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*11, 0.087*12),
119 HBHOCellParameters (13, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*12, 0.087*13),
120 HBHOCellParameters (14, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*13, 0.087*14),
121 HBHOCellParameters (15, 4, 1, 1, 5, HORMIN1, HORMAX, 0.087*14, 0.087*15)
123 int nCells =
sizeof(cells)/
sizeof(HBHOCellParameters);
124 std::vector <HBHOCellParameters>
result;
125 result.reserve (nCells);
126 for (
int i = 0;
i < nCells; ++
i) result.push_back (cells[
i]);
131 std::vector <HECellParameters> makeHECells () {
132 const float HEZMIN = 400.458;
133 const float HEZMID = 436.168;
134 const float HEZMAX = 549.268;
136 HECellParameters cells [] = {
138 HECellParameters ( 16, 3, 1, 1, 5,418.768,470.968, 0.087*15, 0.087*16),
139 HECellParameters ( 17, 1, 1, 1, 5,409.698,514.468, 0.087*16, 0.087*17),
140 HECellParameters ( 18, 1, 1, 1, 5,391.883,427.468, 0.087*17, 0.087*18),
141 HECellParameters ( 18, 2, 1, 1, 5,427.468,540.568, 0.087*17, 0.087*18),
142 HECellParameters ( 19, 1, 1, 1, 5, HEZMIN, HEZMID, 0.087*18, 0.087*19),
143 HECellParameters ( 19, 2, 1, 1, 5, HEZMID, HEZMAX, 0.087*18, 0.087*19),
144 HECellParameters ( 20, 1, 1, 1, 5, HEZMIN, HEZMID, 0.087*19, 1.74),
145 HECellParameters ( 20, 2, 1, 1, 5, HEZMID, HEZMAX, 0.087*19, 1.74),
146 HECellParameters ( 21, 1, 1, 2,10, HEZMIN, HEZMID, 1.74, 1.83),
147 HECellParameters ( 21, 2, 1, 2,10, HEZMID, HEZMAX, 1.74, 1.83),
148 HECellParameters ( 22, 1, 1, 2,10, HEZMIN, HEZMID, 1.83, 1.93),
149 HECellParameters ( 22, 2, 1, 2,10, HEZMID, HEZMAX, 1.83, 1.93),
150 HECellParameters ( 23, 1, 1, 2,10, HEZMIN, HEZMID, 1.93, 2.043),
151 HECellParameters ( 23, 2, 1, 2,10, HEZMID, HEZMAX, 1.93, 2.043),
152 HECellParameters ( 24, 1, 1, 2,10, HEZMIN, HEZMID, 2.043, 2.172),
153 HECellParameters ( 24, 2, 1, 2,10, HEZMID, HEZMAX, 2.043, 2.172),
154 HECellParameters ( 25, 1, 1, 2,10, HEZMIN, HEZMID, 2.172, 2.322),
155 HECellParameters ( 25, 2, 1, 2,10, HEZMID, HEZMAX, 2.172, 2.322),
156 HECellParameters ( 26, 1, 1, 2,10, HEZMIN, HEZMID, 2.322, 2.500),
157 HECellParameters ( 26, 2, 1, 2,10, HEZMID, HEZMAX, 2.322, 2.500),
158 HECellParameters ( 27, 1, 1, 2,10, HEZMIN,418.768, 2.500, 2.650),
159 HECellParameters ( 27, 2, 1, 2,10,418.768, HEZMID, 2.500, 2.650),
160 HECellParameters ( 27, 3, 1, 2,10, HEZMID, HEZMAX, 2.500, 2.650),
161 HECellParameters ( 28, 1, 1, 2,10, HEZMIN,418.768, 2.650, 2.868),
162 HECellParameters ( 28, 2, 1, 2,10,418.768, HEZMID, 2.650, 2.868),
163 HECellParameters ( 28, 3, 1, 2,10, HEZMID, HEZMAX, 2.650, 3.000),
164 HECellParameters ( 29, 1, 1, 2,10, HEZMIN, HEZMID, 2.868, 3.000),
165 HECellParameters ( 29, 2, 1, 2,10,418.768, HEZMID, 2.868, 3.000)
167 int nCells =
sizeof(cells)/
sizeof(HECellParameters);
168 std::vector <HECellParameters>
result;
169 result.reserve (nCells);
170 for (
int i = 0;
i < nCells; ++
i) result.push_back (cells[
i]);
176 std::vector <HECellParameters> makeHECells_H2 () {
177 const float HEZMIN_H2 = 400.715;
178 const float HEZMID_H2 = 436.285;
179 const float HEZMAX_H2 = 541.885;
181 HECellParameters cells [] = {
183 HECellParameters ( 16, 3, 1, 1, 5, 409.885, 462.685, 1.305, 1.373),
184 HECellParameters ( 17, 1, 1, 1, 5, HEZMIN_H2, 427.485, 1.373, 1.444),
185 HECellParameters ( 17, 2, 1, 1, 5, 427.485, 506.685, 1.373, 1.444),
186 HECellParameters ( 18, 1, 1, 1, 5, HEZMIN_H2, HEZMID_H2, 1.444, 1.521),
187 HECellParameters ( 18, 2, 1, 1, 5, HEZMID_H2, 524.285, 1.444, 1.521),
188 HECellParameters ( 19, 1, 1, 1, 5, HEZMIN_H2, HEZMID_H2, 1.521, 1.603),
189 HECellParameters ( 19, 2, 1, 1, 5, HEZMID_H2, HEZMAX_H2, 1.521, 1.603),
190 HECellParameters ( 20, 1, 1, 1, 5, HEZMIN_H2, HEZMID_H2, 1.603, 1.693),
191 HECellParameters ( 20, 2, 1, 1, 5, HEZMID_H2, HEZMAX_H2, 1.603, 1.693),
192 HECellParameters ( 21, 1, 1, 2, 5, HEZMIN_H2, HEZMID_H2, 1.693, 1.79),
193 HECellParameters ( 21, 2, 1, 2, 5, HEZMID_H2, HEZMAX_H2, 1.693, 1.79),
194 HECellParameters ( 22, 1, 1, 2,10, HEZMIN_H2, HEZMID_H2, 1.79, 1.88),
195 HECellParameters ( 22, 2, 1, 2,10, HEZMID_H2, HEZMAX_H2, 1.79, 1.88),
196 HECellParameters ( 23, 1, 1, 2,10, HEZMIN_H2, HEZMID_H2, 1.88, 1.98),
197 HECellParameters ( 23, 2, 1, 2,10, HEZMID_H2, HEZMAX_H2, 1.88, 1.98),
198 HECellParameters ( 24, 1, 1, 2,10, HEZMIN_H2, 418.685, 1.98, 2.09),
199 HECellParameters ( 24, 2, 1, 2,10, 418.685, HEZMID_H2, 1.98, 2.09),
200 HECellParameters ( 24, 3, 1, 2,10, HEZMID_H2, HEZMAX_H2, 1.98, 2.09),
201 HECellParameters ( 25, 1, 1, 2,10, HEZMIN_H2, 418.685, 2.09, 2.21),
202 HECellParameters ( 25, 2, 1, 2,10, 418.685, HEZMID_H2, 2.09, 2.21),
203 HECellParameters ( 25, 3, 1, 2,10, HEZMID_H2, HEZMAX_H2, 2.09, 2.21)
205 int nCells =
sizeof(cells)/
sizeof(HECellParameters);
206 std::vector <HECellParameters>
result;
207 result.reserve (nCells);
208 for (
int i = 0;
i < nCells; ++
i) result.push_back (cells[
i]);
213 std::vector <HFCellParameters> makeHFCells () {
214 const float HFZMIN1 = 1115.;
215 const float HFZMIN2 = 1137.;
216 const float HFZMAX = 1280.1;
218 HFCellParameters cells [] = {
220 HFCellParameters (29, 1, 1, 2, 10, HFZMIN1, HFZMAX,116.2,130.0),
221 HFCellParameters (29, 2, 1, 2, 10, HFZMIN2, HFZMAX,116.2,130.0),
222 HFCellParameters (30, 1, 1, 2, 10, HFZMIN1, HFZMAX, 97.5,116.2),
223 HFCellParameters (30, 2, 1, 2, 10, HFZMIN2, HFZMAX, 97.5,116.2),
224 HFCellParameters (31, 1, 1, 2, 10, HFZMIN1, HFZMAX, 81.8, 97.5),
225 HFCellParameters (31, 2, 1, 2, 10, HFZMIN2, HFZMAX, 81.8, 97.5),
226 HFCellParameters (32, 1, 1, 2, 10, HFZMIN1, HFZMAX, 68.6, 81.8),
227 HFCellParameters (32, 2, 1, 2, 10, HFZMIN2, HFZMAX, 68.6, 81.8),
228 HFCellParameters (33, 1, 1, 2, 10, HFZMIN1, HFZMAX, 57.6, 68.6),
229 HFCellParameters (33, 2, 1, 2, 10, HFZMIN2, HFZMAX, 57.6, 68.6),
230 HFCellParameters (34, 1, 1, 2, 10, HFZMIN1, HFZMAX, 48.3, 57.6),
231 HFCellParameters (34, 2, 1, 2, 10, HFZMIN2, HFZMAX, 48.3, 57.6),
232 HFCellParameters (35, 1, 1, 2, 10, HFZMIN1, HFZMAX, 40.6, 48.3),
233 HFCellParameters (35, 2, 1, 2, 10, HFZMIN2, HFZMAX, 40.6, 48.3),
234 HFCellParameters (36, 1, 1, 2, 10, HFZMIN1, HFZMAX, 34.0, 40.6),
235 HFCellParameters (36, 2, 1, 2, 10, HFZMIN2, HFZMAX, 34.0, 40.6),
236 HFCellParameters (37, 1, 1, 2, 10, HFZMIN1, HFZMAX, 28.6, 34.0),
237 HFCellParameters (37, 2, 1, 2, 10, HFZMIN2, HFZMAX, 28.6, 34.0),
238 HFCellParameters (38, 1, 1, 2, 10, HFZMIN1, HFZMAX, 24.0, 28.6),
239 HFCellParameters (38, 2, 1, 2, 10, HFZMIN2, HFZMAX, 24.0, 28.6),
240 HFCellParameters (39, 1, 1, 2, 10, HFZMIN1, HFZMAX, 20.1, 24.0),
241 HFCellParameters (39, 2, 1, 2, 10, HFZMIN2, HFZMAX, 20.1, 24.0),
242 HFCellParameters (40, 1, 3, 4, 20, HFZMIN1, HFZMAX, 16.9, 20.1),
243 HFCellParameters (40, 2, 3, 4, 20, HFZMIN2, HFZMAX, 16.9, 20.1),
244 HFCellParameters (41, 1, 3, 4, 20, HFZMIN1, HFZMAX, 12.5, 16.9),
245 HFCellParameters (41, 2, 3, 4, 20, HFZMIN2, HFZMAX, 12.5, 16.9)
247 int nCells =
sizeof(cells)/
sizeof(HFCellParameters);
248 std::vector <HFCellParameters>
result;
249 result.reserve (nCells);
250 for (
int i = 0;
i < nCells; ++
i) result.push_back (cells[
i]);
258 for (
size_t iCell = 0; iCell < fCells.size(); ++iCell) {
259 const HBHOCellParameters& param = fCells[iCell];
260 for (
int iPhi = param.phiFirst; iPhi <= MAX_HCAL_PHI; iPhi += param.phiStep) {
261 for (
int iside = -1; iside <= 1; iside += 2) {
263 double phiCenter = ((iPhi-1)*360./MAX_HCAL_PHI + 0.5*param.dphi) * DEGREE2RAD;
264 double etaCenter = 0.5*(param.etaMin + param.etaMax);
265 double x = param.rMin*
cos (phiCenter);
266 double y = param.rMin*
sin (phiCenter);
267 double z = iside * param.rMin * sinh(etaCenter);
270 std::vector<double> cellParams;
271 cellParams.reserve (5);
272 cellParams.push_back (0.5 * (param.etaMax - param.etaMin));
273 cellParams.push_back (0.5 * param.dphi * DEGREE2RAD);
274 cellParams.push_back (0.5 * (param.rMax - param.rMin) * cosh (etaCenter));
275 cellParams.push_back ( fabs( refPoint.eta() ) ) ;
276 cellParams.push_back ( fabs( refPoint.z() ) ) ;
289 fGeometry->
addCell (hid, newcell);
296 for (
size_t iCell = 0; iCell < fCells.size(); ++iCell) {
297 const HECellParameters& param = fCells[iCell];
298 for (
int iPhi = param.phiFirst; iPhi <= MAX_HCAL_PHI; iPhi += param.phiStep) {
299 for (
int iside = -1; iside <= 1; iside += 2) {
301 double phiCenter = ((iPhi-1)*360./MAX_HCAL_PHI + 0.5*param.dphi) * DEGREE2RAD;
302 double etaCenter = 0.5 * (param.etaMin + param.etaMax);
304 double perp = param.zMin / sinh (etaCenter);
305 double x = perp *
cos (phiCenter);
306 double y = perp *
sin (phiCenter);
307 double z = iside * param.zMin;
310 std::vector<double> cellParams;
311 cellParams.reserve (5);
312 cellParams.push_back (0.5 * (param.etaMax - param.etaMin));
313 cellParams.push_back (0.5 * param.dphi * DEGREE2RAD);
314 cellParams.push_back (-0.5 * (param.zMax - param.zMin) / tanh (etaCenter));
315 cellParams.push_back ( fabs( refPoint.eta() ) ) ;
316 cellParams.push_back ( fabs( refPoint.z() ) ) ;
328 fGeometry->
addCell (hid, newcell);
335 for (
size_t iCell = 0; iCell < fCells.size(); ++iCell) {
336 const HFCellParameters& param = fCells[iCell];
337 for (
int iPhi = param.phiFirst; iPhi <= MAX_HCAL_PHI; iPhi += param.phiStep) {
338 for (
int iside = -1; iside <= 1; iside += 2) {
340 double phiCenter = ((iPhi-1)*360./MAX_HCAL_PHI + 0.5*param.dphi) * DEGREE2RAD;
343 double etaCenter = 0.5 * (
inner.eta() +
outer.eta());
345 double perp = param.zMin / sinh (etaCenter);
346 double x = perp *
cos (phiCenter);
347 double y = perp *
sin (phiCenter);
348 double z = iside * param.zMin;
351 std::vector<double> cellParams; cellParams.reserve (3);
352 cellParams.push_back (0.5 * (
inner.eta() -
outer.eta()));
353 cellParams.push_back (0.5 * param.dphi * DEGREE2RAD);
354 cellParams.push_back (0.5 * (param.zMax - param.zMin));
355 cellParams.push_back ( fabs( refPoint.eta() ) ) ;
356 cellParams.push_back ( fabs( refPoint.z() ) ) ;
368 fGeometry->
addCell (hid, newcell);
391 fillHBHO (hcalGeometry, makeHBCells(),
true);
392 fillHBHO (hcalGeometry, makeHOCells(),
false);
393 fillHF (hcalGeometry, makeHFCells());
394 fillHE (hcalGeometry, makeHECells());
397 fillHBHO (hcalGeometry, makeHBCells(),
true);
398 fillHBHO (hcalGeometry, makeHOCells(),
false);
399 fillHE (hcalGeometry, makeHECells_H2());
Sin< T >::type sin(const T &t)
void allocatePar(ParVec::size_type n, unsigned int m)
void addCell(const DetId &id, CaloCellGeometry *ccg)
Add a cell to the geometry.
Cos< T >::type cos(const T &t)
CaloSubdetectorGeometry * load(const HcalTopology &fTopology)
int firstHEDoublePhiRing() const
CaloCellGeometry::CornersMgr * cornersMgr()
static const double * getParmPtr(const std::vector< double > &vd, ParMgr *mgr, ParVecVec &pvv)
T perp() const
Magnitude of transverse component.
void allocateCorners(CaloCellGeometry::CornersVec::size_type n)
HcalFlexiHardcodeGeometryLoader()