22 #include "GaudiKernel/MsgStream.h"
35 return StatusCode::SUCCESS;
40 return StatusCode::SUCCESS;
51 float the_aeta = (clus->
eta());
53 the_aeta = (the_aeta>0)?(the_aeta):(- the_aeta);
55 if (the_aeta >= etamax)
return;
58 ATH_MSG_DEBUG(
"************************************************************************************************" );
60 ATH_MSG_DEBUG(
"************************************************************************************************" );
63 if (the_aeta < eta_start_crack)
65 else if (the_aeta > eta_end_crack)
73 int ibin = (
static_cast<int> (the_aeta / etamax * 100));
74 int ibin_frontCorr = ibin;
77 ibin_frontCorr = (
static_cast<int> (235. / etamax ));
81 ATH_MSG_DEBUG(
"Check etas -------------------------------------------------------------------" );
82 ATH_MSG_DEBUG(
"Eta --> " << the_aeta <<
" Bin --> " << ibin <<
" Cluster eta = " << clus->
eta() );
84 ATH_MSG_DEBUG(
"Check calibration coefficients -----------------------------------------------" );
94 float shower_lbary = showerDepth.
depth(the_aeta,
103 if (shower_lbary < 5. || shower_lbary > 25.){
114 for (
int sampling=1; sampling<4; sampling++) {
123 ATH_MSG_DEBUG(
"E accordion base --->>>> " << eacc_base <<
" Eps base " << eps_base );
131 float depth_max = 20. + 3. * (eacc_base+eps_base) * 1
e-6;
133 ATH_MSG_DEBUG(
"Raw energy ---->> " << (eacc_base+eps_base) );
134 ATH_MSG_DEBUG(
"Bary max for this event ---->> " << depth_max );
137 if ( shower_lbary > depth_max ) {
150 float e_out_perc = 0;
151 if (the_aeta < eta_start_crack) {
158 float e_acc_reco=acc_corr*(eacc_base )*(1+(e_out_perc)/100);
164 float e_leak_perc = 0;
167 if (e_leak_perc < 0 ) e_leak_perc = 0.;
168 if (e_leak_perc > 100.) e_leak_perc = 100.;
169 float e_leak_reco = e_leak_perc * (e_acc_reco)/100;
175 float raw_energy=e_acc_reco*.001;
176 float e_front_reco = eps_base;
178 if (raw_energy <= 1) {
182 else if (the_aeta < 1.8) {
184 if (the_aeta < eta_start_crack) {
185 float WpsOff =
correction[3][ibin_frontCorr][1] +
correction[3][ibin_frontCorr][2] * raw_energy +
correction[3][ibin_frontCorr][3] * raw_energy * raw_energy;
187 e_front_reco=WpsOff + WpsSlo*(eps_base);
193 ATH_MSG_DEBUG(
" WpsOff,WpsSlo " << WpsOff <<
" " << WpsSlo );
194 ATH_MSG_DEBUG(
" eps_base, efront_reco " << eps_base <<
" " << e_front_reco );
200 if (raw_energy<20.) raw_energy=20.;
202 float WpsOff =
correction[3][ibin_frontCorr][1] +
correction[3][ibin_frontCorr][2] * raw_energy +
correction[3][ibin_frontCorr][3] * sqrt(raw_energy);
204 float WpsSlo2 =
correction[5][ibin_frontCorr][1] +
correction[5][ibin_frontCorr][2] * raw_energy -
correction[5][ibin_frontCorr][3] / (raw_energy * raw_energy) ;
205 e_front_reco=WpsOff + WpsSlo*(eps_base) + WpsSlo2*(eps_base)*(eps_base);
206 if (e_front_reco<0.) e_front_reco= eps_base;
212 ATH_MSG_DEBUG(
" WpsOff, WpsSlo, WpsSlo2 " << WpsOff <<
" " << WpsSlo <<
" " << WpsSlo2 );
213 ATH_MSG_DEBUG(
" eps_base, efront_reco " << eps_base <<
" " << e_front_reco );
230 e_front_reco= (
p1 +
p2 * shower_lbary +
p3 * shower_lbary * shower_lbary);
231 if (e_front_reco<0.) e_front_reco=eps_base;
238 float e_calo_reco =e_front_reco + e_leak_reco + e_acc_reco;
241 ATH_MSG_DEBUG(
"CaloSwCalibrationHits::Final reco energy ---------------------- " << e_calo_reco );
242 ATH_MSG_DEBUG(
"CaloSwCalibrationHits::Front ---------------------- " << e_front_reco );
243 ATH_MSG_DEBUG(
"CaloSwCalibrationHits::Accordion ------------------ " << e_acc_reco );
244 ATH_MSG_DEBUG(
"CaloSwCalibrationHits::out of cone ---------------- " << acc_corr*(eacc_base )*(e_out_perc)/100 );
245 ATH_MSG_DEBUG(
"CaloSwCalibrationHits::Leakage -------------------- " << e_leak_reco );
268 for (
int sampling=1; sampling<=2; sampling++){
279 ATH_MSG_DEBUG(
"---------- Sum of the sampling energy --- >> " << e_temp <<
" EcaloReco = " << e_calo_reco );
280 ATH_MSG_DEBUG(
"CaloSwCalibHitsCalibration Energy after correction --> " << clus->
energy() );