32#include "GaudiKernel/StatusCode.h"
35#include "CLHEP/Units/PhysicalConstants.h"
36#include "GaudiKernel/MsgStream.h"
46const double deta = 0.2;
47const double dphi =
twopi / 64. ;
58 return StatusCode::SUCCESS;
65 float eta = cluster->
eta();
66 float phi = cluster->
phi();
68 float aeta = fabs(
eta);
72 if (aeta < etamin_crack || aeta > etamax_crack)
77 assert (scint_weight.
size() == correction.size());
78 if (correction.size() == 0)
return;
90 for ( ; f_cell!=l_cell; ++f_cell)
94 int inum = cell->caloDDE()->getSampling();
96 if (CaloSampling::TileGap3 == inum ) {
97 double phic = cell->phi();
98 double etac = cell->eta();
101 if (etac >=
eta-deta && etac <=
eta+deta) {
102 if (phic >=
phi-dphi && phic <=
phi+dphi) {
103 eh_scint += cell->e();
111 double granularity = (etamax_crack - etamin_crack)/correction.size();
112 int ind =
static_cast<int> ((aeta - etamin_crack)/granularity);
115 eh_scint = eh_scint * scint_weight[ind];
118 double energy = (cluster->
e())*correction[ind];
122 energy += eh_scint * correction[ind];
123 cluster->
setE(energy);
133 (
const std::string& name)
135 return this->
setProperty (StringProperty (
"cells_name", name));
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
Data object for each calorimeter readout cell.
virtual void setenergy(xAOD::CaloCluster *cluster, float energy) const
virtual StatusCode initialize() override
Initialize method.
Principal data class for CaloCell clusters.
virtual double e() const
Retrieve energy independent of signal state.
virtual double eta() const
Retrieve eta independent of signal state.
virtual double phi() const
Retrieve phi independent of signal state.
virtual void setE(double e)
Set energy.
virtual void makeCorrection(const Context &myctx, xAOD::CaloCluster *cluster) const override
virtual StatusCode setCaloCellContainerName(const std::string &name) override
Change the name of the CaloCellContainer used by this tool.
Constant< CxxUtils::Array< 1 > > m_correction
Constant< float > m_etamax_crack
SG::ReadHandleKey< CaloCellContainer > m_cells_name
Property: The name of the container in which to look to find tile cells.
Constant< float > m_etamin_crack
virtual StatusCode initialize() override
Standard Gaudi initialize method.
Constant< CxxUtils::Array< 1 > > m_scint_weight
Read-only multidimensional array.
unsigned int size(unsigned int dim=0) const
Return the size of the array along one dimension.
DataModel_detail::const_iterator< DataVector > const_iterator
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
const EventContext & ctx() const