33{
34
35
36
38 const double clusterEMEnergy =
cls.rawE();
39 if (!clusterMLCorrectedEnergyAccessor.isAvailable(cls))
40 {
42 <<
"' found for cluster with index " <<
cls.index()
43 << ". PFO energy will not be scaled.");
44 }
45 const double clusterDecorEnergy = clusterMLCorrectedEnergyAccessor.isAvailable(cls) ? clusterMLCorrectedEnergyAccessor(cls) : clusterEMEnergy;
46 const double scaleFactor = clusterEMEnergy > FLT_MIN ? clusterDecorEnergy / clusterEMEnergy : 1.0;
47
48 ATH_MSG_DEBUG(
"NeutralPFOClusterMLCorrectionTool: Scaling PFO with index " << pfo.
index()
49 <<
" energy from " << pfo.
e() <<
" to " << (pfo.
e() * scaleFactor)
50 <<
" using cluster index " <<
cls.index()
51 << " EM energy " << clusterEMEnergy
52 << " Decor energy " << clusterDecorEnergy
53 << " scale factor " << scaleFactor);
54
55 pfo.
setP4(pfo.
pt() * scaleFactor, pfo.
eta(), pfo.
phi(), pfo.
m() * scaleFactor);
56}
SG::Accessor< T, ALLOC > Accessor
virtual double pt() const override
void setP4(float pt, float eta, float phi, float m)
virtual double m() const override
The invariant mass of the particle.
virtual double phi() const override
The azimuthal angle ( ) of the particle.
virtual double eta() const override
The pseudorapidity ( ) of the particle.
virtual double e() const override
The total energy of the particle.