10 : theTopology( topology )
22 std::vector<HcalTrigTowerDetId>
25 std::vector<HcalTrigTowerDetId>
results;
27 int HfTowerPhiSize,
shift;
51 ieta *= cellId.
zside();
57 int iphi = (((cellId.
iphi()+
shift)/HfTowerPhiSize) * HfTowerPhiSize +
shift)%72;
68 int iphi1 = cellId.
iphi();
69 int ieta = cellId.
ieta();
83 std::vector<HcalDetId>
88 int tower_ieta = hcalTrigTowerDetId.
ieta();
89 int tower_iphi = hcalTrigTowerDetId.
iphi();
91 int cell_ieta = tower_ieta;
92 int cell_iphi = tower_iphi;
94 int min_depth, n_depths;
100 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++)
108 for (
int ho_depth = min_depth; ho_depth <= min_depth + n_depths - 1; ho_depth++)
121 if (tower_iphi%2 == 0) cell_iphi = tower_iphi - 1;
123 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++)
127 if (
abs(tower_ieta) == 28){
129 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++){
130 if (tower_ieta < 0) results.push_back(
HcalDetId(
HcalEndcap, tower_ieta - 1, cell_iphi, cell_depth));
131 if (tower_ieta > 0) results.push_back(
HcalDetId(
HcalEndcap, tower_ieta + 1, cell_iphi, cell_depth));
143 else HfTowerPhiSize = 72 /
nPhiBins(tower_ieta);
148 for (
int iHFTowerPhiSegment = 0; iHFTowerPhiSegment < HfTowerPhiSize; iHFTowerPhiSegment++){
150 cell_iphi = (tower_iphi / HfTowerPhiSize) * HfTowerPhiSize;
152 cell_iphi += iHFTowerPhiSegment;
154 cell_iphi = cell_iphi % 72;
157 if (cell_iphi%2 == 0)
continue;
159 for (
int iHFTowerEtaSegment = 0; iHFTowerEtaSegment < HfTowerEtaSize; iHFTowerEtaSegment++){
161 cell_ieta = FirstHFRingInTower + iHFTowerEtaSegment;
163 if (cell_ieta >= 40 && cell_iphi%4 == 1)
continue;
169 if (tower_ieta < 0) zside = -1;
173 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++)
176 if ( zside * cell_ieta == 30 ) {
178 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++)
194 int ietaAbs =
abs(ieta);
197 return (ietaAbs ==
nTowers()) ? 4 : 3;
204 int inputTower =
abs(ietaTower);
206 for(
int iTower =
firstHFTower(); iTower != inputTower; ++iTower) {
211 if(ietaTower < 0) result *= -1;
217 int ietaAbs =
abs(ieta);
HcalSubdetector subdet() const
get the subdetector
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
const HcalTopology * theTopology
int zside() const
get the z-side of the cell (1/-1)
int ieta() const
get the tower ieta
int hfTowerEtaSize(int ieta) const
int nPhiBins(int ieta) const
an interface for CaloSubdetectorGeometry
int depth() const
get the tower depth
int ieta() const
get the cell ieta
Abs< T >::type abs(const T &t)
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
int firstHEDoublePhiRing() const
int ietaAbs() const
get the absolute value of the cell ieta
int iphi() const
get the cell iphi
void towerEtaBounds(int ieta, double &eta1, double &eta2) const
where this tower begins and ends in eta
int firstHFRingInTower(int ietaTower) const
since the towers are irregular in eta in HF
static const double theHFEtaBounds[]
int firstHFQuadPhiRing() const
std::vector< std::vector< double > > tmp
static unsigned int const shift
static const double theHBHEEtaBounds[]
HcalTrigTowerGeometry(const HcalTopology *topology)
int iphi() const
get the tower iphi
void setupHF(bool useShortFibers, bool useQuadRings)
bool useUpgradeConfigurationHFTowers_
std::vector< HcalDetId > detIds(const HcalTrigTowerDetId &) const