31 const float eta0=
cl->eta0();
32 const float phi0=
cl->phi0();
34 float mod=modulator->getModulation(
phi0, eshape);
43 float eta=(*cellIter)->eta();
44 float phi=(*cellIter)->phi();
50 float geoWeight=cellIter.weight();
51 float cell_E_w=(*cellIter)->energy()*geoWeight;
68 float sig=(E_unsubtr!=0. ? E_cl/E_unsubtr : 0.);
70 float ET_cl=(std::abs(eta_cl)>99. ? 0. : E_cl/std::cosh(eta_cl));
71 subtr_mom.SetPxPyPzE(ET_cl*
std::cos(phi_cl),ET_cl*
std::sin(phi_cl),ET_cl*std::sinh(eta_cl),E_cl);
76 float eta0=
cl->eta0();
89 float sgn=(isNeg) ? -1 : 1;
92 float cell_et = theCell->
et();
94 unsigned int iSlice=
index->getIndex(eta0,
layer);
100 slice->setEt(
slice->et()+sgn*cell_et*geoWeight);
107 for(
unsigned int ih=0; ih<shape->
at(iSlice)->
etCos().
size(); ih++)
110 float tmp_cos = shape->
at(iSlice)->etCos().at(ih);
111 shape->
at(iSlice)->etCos()[ih] = tmp_cos + cell_et*
cos(ih_f*
phi0)*geoWeight;
113 float tmp_sin = shape->
at(iSlice)->etSin().at(ih);
114 shape->
at(iSlice)->etSin()[ih] = tmp_sin + cell_et*
sin(ih_f*
phi0)*geoWeight;
128 const float eta0=
cl->eta0();
129 const float phi0=
cl->phi0();
131 float mod=modulator->getModulation(
phi0, eshape);
141 const auto *cellLink =
cl->getCellLinks();
142 if( cellLink == NULL){
143 ATH_MSG_ERROR(
"HIJetCellSubtraction: cellLink null - returning");
153 samplingPattern |= (0x1U<<
sample);
154 float eta=(*cellIter)->eta();
155 float phi=(*cellIter)->phi();
162 float geoWeight=cellIter.weight();
163 float cell_E_w=(*cellIter)->energy()*geoWeight;
167 eta_cl+=cell_E_w*
eta;
168 phi_cl+=cell_E_w*
phi;
170 E_sample[
sample]+=cell_E_w;
172 float abs_weight=std::abs(cell_E_w);
173 float cell_x=(*cellIter)->x();
174 float cell_y=(*cellIter)->y();
175 float cell_z=(*cellIter)->z();
177 er2+=std::sqrt(cell_x*cell_x+cell_y*cell_y+cell_z*cell_z)*abs_weight;
186 float sig=(E_unsubtr!=0. ? E_cl/E_unsubtr : 0.);
188 float ET_cl=(std::abs(eta_cl)>99. ? 0. : E_cl/std::cosh(eta_cl));
190 subtr_mom.SetPxPyPzE(ET_cl*
std::cos(phi_cl),ET_cl*
std::sin(phi_cl),ET_cl*std::sinh(eta_cl),E_cl);
193 cl->setSamplingPattern(samplingPattern);
194 for(
unsigned int isample=0; isample < E_sample.size(); isample++)
196 if( samplingPattern & (0x1U << isample) )
198 float current_energy=E_sample.at(isample);
200 cl->setEnergy(
s,current_energy);
205 if(etot2!=0.)
cm=er2/etot2;