12 if (towers.size() > towerIndex) {
13 towers.at(towerIndex) = tower;
24 if(towerIndex<towers.size()){
25 if(towers[towerIndex].hwEta()!=iEta || towers[towerIndex].hwPhi()!=iPhi){
27 for(
size_t towerNr=0;towerNr<towers.size();towerNr++){
28 if(towers[towerNr].hwEta()==iEta && towers[towerNr].hwPhi()==iPhi)
return towers[towerNr];
30 }
else return towers[towerIndex];
34 for(
size_t towerNr=0;towerNr<towers.size();towerNr++){
35 if(towers[towerNr].hwEta()==iEta && towers[towerNr].hwPhi()==iPhi)
return towers[towerNr];
44 for(
size_t clusterNr=0;clusterNr<clusters.size();clusterNr++){
45 if(clusters[clusterNr].hwEta()==iEta && clusters[clusterNr].hwPhi()==iPhi)
return clusters[clusterNr];
58 if(!isValidIEtaIPhi(iEta,iPhi))
return caloTowerHashMax();
60 const int absIEta =
abs(iEta);
61 if(absIEta>kHFEnd)
return kNrTowers;
62 else if(absIEta<=kHBHEEnd){
64 if(iEta>0) iEtaNoZero--;
65 return (iEtaNoZero+kHBHEEnd)*kHBHENrPhi+iPhi-1;
67 int iEtaIndex = iEta+kHFEnd;
68 if(iEta>0) iEtaIndex= iEta-kHBHEEnd+(kHFEnd-kHBHEEnd)-1;
69 return iEtaIndex*kHFNrPhi+iPhi/kHFPhiSeg + kNrHBHETowers;
83 size_t absIEta =
abs(iEta);
84 if(iPhi<=0 || iPhi>kHBHENrPhi)
return false;
85 if(absIEta==0 || absIEta>kHFEnd)
return false;
92 int localEtaMin,
int localEtaMax,
int localPhiMin,
int localPhiMax,
96 return calHwEtSum(iEta,iPhi,towers,localEtaMin,localEtaMax,localPhiMin,localPhiMax,kHFEnd,etMode);
100 int localEtaMin,
int localEtaMax,
int localPhiMin,
int localPhiMax,
101 int iEtaAbsMax,
SubDet etMode)
104 for(
int etaNr=localEtaMin;etaNr<=localEtaMax;etaNr++){
105 for(
int phiNr=localPhiMin;phiNr<=localPhiMax;phiNr++){
109 if(
abs(towerIEta)<=iEtaAbsMax){
110 const l1t::CaloTower& tower = getTower(towers,towerIEta,towerIPhi);
113 else if(etMode==CALO) hwEtSum+=tower.
hwPt();
126 bool finishPhi =
false;
132 else if(etMode==CALO) towerHwEt+=tower.
hwPt();
133 if(towerHwEt>=minHwEt && towerHwEt<=maxHwEt) nrTowers++;
134 finishPhi = (nav.
currIPhi() == iPhiMax);
145 if(ieta==0) ieta = 1;
146 if(ieta>32) ieta = 32;
147 if(ieta<-32) ieta = -32;
149 const float towerEtas[41] = {0,0.087,0.174,0.261,0.348,0.435,0.522,0.609,0.696,0.783,0.870,0.957,1.044,1.131,1.218,1.305,1.392,1.479,1.566,1.653,1.740,1.830,1.930,2.043,2.172,2.322,2.5,2.650,2.853,3.139,3.314,3.489,3.664,3.839,4.013,4.191,4.363,4.538,4.716,4.889,5.191};
150 return std::make_pair( towerEtas[
abs(ieta)-1],towerEtas[
abs(ieta)] );
155 std::pair<float,float> bounds = towerEtaBounds(ieta);
156 float eta = (bounds.second+bounds.first)/2.;
157 float sign = ieta>0 ? 1. : -1.;
163 return (
float(iphi)-0.5)*towerPhiSize(ieta);
168 std::pair<float,float> bounds = towerEtaBounds(ieta);
169 float size = (bounds.second-bounds.first);
175 if(
abs(ieta)<=28)
return 2.*
M_PI/72.;
176 else return 2.*
M_PI/18.;
186 cand->
hwEta() * 0.0435,
187 cand->
hwPhi() * 0.0435,
245 towerEta(cand->
hwEta()),
std::pair< int, int > north()
static int offsetIEta(int iEta, int offset)
PtEtaPhiMLorentzVectorD PtEtaPhiMLorentzVector
Lorentz vector with cartesian internal representation.
static int offsetIPhi(int iPhi, int offset)
Abs< T >::type abs(const T &t)
std::pair< int, int > east()
EtSumType getType() const
tuple size
Write out results.