19 std::vector<HcalTrigTowerDetId>
22 std::vector<HcalTrigTowerDetId>
results;
35 ieta *= cellId.
zside();
40 int iphi = (((cellId.
iphi()+1)/4) * 4 + 1)%72;
51 int iphi1 = cellId.
iphi();
52 int ieta = cellId.
ieta();
66 std::vector<HcalDetId>
71 int tower_ieta = hcalTrigTowerDetId.
ieta();
72 int tower_iphi = hcalTrigTowerDetId.
iphi();
74 int cell_ieta = tower_ieta;
75 int cell_iphi = tower_iphi;
77 int min_depth, n_depths;
83 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++)
91 for (
int ho_depth = min_depth; ho_depth <= min_depth + n_depths - 1; ho_depth++)
104 if (tower_iphi%2 == 0) cell_iphi = tower_iphi - 1;
106 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++)
110 if (
abs(tower_ieta) == 28){
112 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++){
113 if (tower_ieta < 0) results.push_back(
HcalDetId(
HcalEndcap, tower_ieta - 1, cell_iphi, cell_depth));
114 if (tower_ieta > 0) results.push_back(
HcalDetId(
HcalEndcap, tower_ieta + 1, cell_iphi, cell_depth));
124 int HfTowerPhiSize = 72 /
nPhiBins(tower_ieta);
128 for (
int iHFTowerPhiSegment = 0; iHFTowerPhiSegment < HfTowerPhiSize; iHFTowerPhiSegment++){
130 cell_iphi = (tower_iphi / HfTowerPhiSize) * HfTowerPhiSize;
132 cell_iphi += iHFTowerPhiSegment;
134 cell_iphi = cell_iphi % 72;
137 if (cell_iphi%2 == 0)
continue;
139 for (
int iHFTowerEtaSegment = 0; iHFTowerEtaSegment < HfTowerEtaSize; iHFTowerEtaSegment++){
141 cell_ieta = FirstHFRingInTower + iHFTowerEtaSegment;
143 if (cell_ieta >= 40 && cell_iphi%4 == 1)
continue;
148 if (tower_ieta < 0) cell_ieta *= -1;
150 for (
int cell_depth = min_depth; cell_depth <= min_depth + n_depths - 1; cell_depth++)
162 int ietaAbs =
abs(ieta);
165 return (ietaAbs ==
nTowers()) ? 4 : 3;
171 int inputTower =
abs(ietaTower);
173 for(
int iTower =
firstHFTower(); iTower != inputTower; ++iTower) {
178 if(ietaTower < 0) result *= -1;
184 int ietaAbs =
abs(ieta);
HcalSubdetector subdet() const
get the subdetector
std::vector< HcalTrigTowerDetId > towerIds(const HcalDetId &cellId) const
the mapping to and from DetIds
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
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 const double theHBHEEtaBounds[]
int iphi() const
get the tower iphi
void setupHF(bool useShortFibers, bool useQuadRings)
std::vector< HcalDetId > detIds(const HcalTrigTowerDetId &) const