206 double mc_eta = gen->momentum().pseudoRapidity();
207 double mc_phi = gen->momentum().phi();
211 m_data->m_mc_pdg = gen->pdg_id();
212 m_data->m_mc_ener = gen->momentum().e();
213 m_data->m_mc_eta = mc_eta;
214 m_data->m_mc_phi = mc_phi;
216 int nClus = pClusColl->size();
218 m_data->m_cls_ener->resize(nClus, 0.0);
219 m_data->m_cls_ener_unw->resize(nClus, 0.0);
220 m_data->m_cls_lambda->resize(nClus, 0.0);
221 m_data->m_cls_eta->resize(nClus, 0.0);
222 m_data->m_cls_phi->resize(nClus, 0.0);
224 m_data->m_cls_smpener->resize(nClus);
225 m_data->m_cls_smpener_unw->resize(nClus);
227 m_data->m_cls_eprep->resize(nClus);
228 m_data->m_cls_dmener->resize(nClus);
230 for(
int i_cls=0; i_cls<nClus; i_cls++){
232 (*
m_data->m_cls_smpener)[i_cls].resize(CaloSampling::Unknown, 0.0);
233 (*
m_data->m_cls_smpener_unw)[i_cls].resize(CaloSampling::Unknown, 0.0);
234 (*
m_data->m_cls_eprep)[i_cls].resize(
m_data->m_narea, 0.0);
235 (*
m_data->m_cls_dmener)[i_cls].resize(
m_data->m_narea, 0.0);
237 m_data->m_cls_engcalib->resize(nClus, 0.0);
238 m_data->m_cls_recostat->resize(nClus, 0);
239 m_data->m_cls_pi0prob->resize(nClus, 0.0);
240 m_data->m_cls_isol->resize(nClus, 0.0);
241 m_data->m_cls_oocener->resize(nClus, 0.0);
242 m_data->m_cls_calib_emfrac->resize(nClus, 0.0);
243 m_data->m_cls_engcalibpres->resize(nClus, 0.0);
247 unsigned int iClus = 0;
248 for( ;clusIter!=clusIterEnd;++clusIter,++iClus) {
251 (*
m_data->m_cls_ener)[iClus] = theCluster->
e();
253 for(
int i_smp=0; i_smp<(int)CaloSampling::Unknown; i_smp++){
258 double mx_calib_tot=0;
261 return StatusCode::FAILURE;
263 m_data->m_engClusSumCalib += mx_calib_tot;
264 (*
m_data->m_cls_engcalib)[iClus] = mx_calib_tot;
266 double mx_calib_emb0=0, mx_calib_eme0=0, mx_calib_tileg3=0;
270 ATH_MSG_ERROR(
"One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent" );
271 return StatusCode::FAILURE;
273 (*
m_data->m_cls_engcalibpres)[iClus] = (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
278 if(pClusColl->size() != pClusCollCalib->size()) {
279 ATH_MSG_WARNING(
"Different size of calibrated and uncalibrated cluster collection "
280 << pClusColl->size() <<
" " << pClusCollCalib->size() );
281 return StatusCode::SUCCESS;
297 if ( pi0Prob < 0 ) pi0Prob = 0;
298 if ( pi0Prob > 1 ) pi0Prob = 1;
300 (*
m_data->m_cls_pi0prob)[iClus] = pi0Prob;
307 return StatusCode::FAILURE;
309 (*
m_data->m_cls_isol)[iClus] = mx_isol;
312 double mx_calib_oocL;
315 return StatusCode::FAILURE;
317 (*
m_data->m_cls_oocener)[iClus] = mx_calib_oocL;
320 double mx_calib_emfrac;
323 return StatusCode::FAILURE;
325 (*
m_data->m_cls_calib_emfrac)[iClus] = mx_calib_emfrac;
333 for(; cellIter != cellIterEnd; cellIter++ ){
334 const CaloCell* pCell = (*cellIter);
337 (*
m_data->m_cls_ener_unw)[iClus] += pCell->
e();
338 (*
m_data->m_cls_smpener_unw)[iClus][(
int)nsmp] += pCell->
e();
341 double clusEner = (*
m_data->m_cls_ener_unw)[iClus];
345 return StatusCode::FAILURE;
347 (*
m_data->m_cls_lambda)[iClus] = clusLambda;
348 (*
m_data->m_cls_eta)[iClus] = theCluster->
eta();
349 (*
m_data->m_cls_phi)[iClus] = theCluster->
phi();
357 for(
int i_dma=0; i_dma<
m_data->m_narea; i_dma++){
362 return StatusCode::FAILURE;
364 (*
m_data->m_cls_dmener)[iClus][i_dma] = dmVal;
372 x = (*
m_data->m_cls_smpener_unw)[iClus][CaloSampling::PreSamplerB];
378 x = (*
m_data->m_cls_smpener_unw)[iClus][CaloSampling::EMB3];
379 y = (*
m_data->m_cls_smpener_unw)[iClus][CaloSampling::TileBar0];
385 x = (*
m_data->m_cls_smpener_unw)[iClus][CaloSampling::TileGap3];
391 x = (*
m_data->m_cls_smpener_unw)[iClus][CaloSampling::PreSamplerE];
397 x = (*
m_data->m_cls_smpener_unw)[iClus][CaloSampling::EME3];
398 y = (*
m_data->m_cls_smpener_unw)[iClus][CaloSampling::HEC0];
404 eprep = (*
m_data->m_cls_ener_unw)[iClus];
407 eprep = (*
m_data->m_cls_ener_unw)[iClus];
410 eprep = (*
m_data->m_cls_ener_unw)[iClus];
414 return StatusCode::FAILURE;
417 (*
m_data->m_cls_eprep)[iClus][i_dma] = eprep;
427 for(
int i_cls=0; i_cls<
m_data->m_ncls; i_cls++){
428 double edm_uncorrected = 0.0;
429 for(
int i_dma=0; i_dma<
m_data->m_narea; i_dma++){
431 if( (*
m_data->m_cls_eprep)[i_cls][i_dma] <= 0.0 &&
438 edm_uncorrected += (*
m_data->m_cls_dmener)[i_cls][i_dma];
439 (*
m_data->m_cls_dmener)[i_cls][i_dma] = 0.0;
443 for(
int i_dma=0; i_dma<
m_data->m_narea; i_dma++){
445 (*
m_data->m_cls_dmener)[i_cls][i_dma] += edm_uncorrected;
452 return StatusCode::SUCCESS;