13#include "CLHEP/Units/PhysicalConstants.h"
17#include "GaudiKernel/MsgStream.h"
18#include "GaudiKernel/StatusCode.h"
33const double deta = 0.2;
34const double dphi =
twopi / 64. ;
47 return StatusCode::SUCCESS;
84 the_aeta = std::abs (adj_eta);
87 the_aeta = std::abs (
eta);
91 float the_aeta_boundaries;
93 the_aeta_boundaries = std::abs (adj_eta);
95 the_aeta_boundaries = std::abs (
eta);
104 float eta_clus = cluster->
eta();
105 float phi_clus = cluster->
phi();
118 for ( ; f_cell!=l_cell; ++f_cell)
122 if (CaloCell_ID::TileGap3 == cell->caloDDE()->getSampling()) {
123 double phic = cell->phi();
124 double etac = cell->eta();
126 float diffeta = etac-eta_clus;
127 float diffphi = phic-phi_clus;
128 if (diffphi < -
pi) diffphi +=
twopi;
129 if (diffphi >
pi) diffphi -=
twopi;
131 if(fabs(diffeta)<deta && fabs(diffphi)<dphi){
132 eh_scint += cell->e();
145 const int degree =
m_degree (myctx);
147 a = interpolate (correctionGoodPhi, fabs(eta_clus), degree, 1);
148 alpha = interpolate (correctionGoodPhi, fabs(eta_clus), degree, 2);
149 offset = interpolate (correctionGoodPhi, fabs(eta_clus), degree, 3);
152 const int degree =
m_degree (myctx);
154 a = interpolate (correctionBadPhi, fabs(eta_clus), degree, 1);
155 alpha = interpolate (correctionBadPhi, fabs(eta_clus), degree, 2);
156 offset = interpolate (correctionBadPhi, fabs(eta_clus), degree, 3);
161 float ec = cluster->
e();
165 cluster->
setE (
a*(ec + alpha*eh_scint + offset));
175 (
const std::string& name)
177 return this->
setProperty (StringProperty (
"cells_name", name));
185 int emptyTGEtaPosind[NBad] = {3,12,23,30,35,44,53,60};
186 float emptyTGEtaPos[NBad];
187 int emptyTGEtaNegind[NBad] = {4,13,20,28,37,45,54,61};
188 float emptyTGEtaNeg[NBad];
191 float modSize =
twopi / Nmodules;
192 float offset = modSize/2.;
194 for(
int i=0;i<NBad;i++){
195 float shift = (emptyTGEtaPosind[i]-1)*modSize;
197 emptyTGEtaPos[i] = offset + shift;
199 shift = (emptyTGEtaNegind[i]-1)*modSize;
201 emptyTGEtaNeg[i] = offset + shift;
208 for(
int ipos=0;ipos<NBad;ipos++){
209 float min = emptyTGEtaPos[ipos]-0.05;
210 float max = emptyTGEtaPos[ipos]+0.05;
217 for(
int ipos=0;ipos<NBad;ipos++){
218 float min = emptyTGEtaNeg[ipos]-0.05;
219 float max = emptyTGEtaNeg[ipos]+0.05;
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
Sandrine should document this.
void setProperty(columnar::PythonToolHandle &self, const std::string &key, nb::object value)
Handle class for reading from StoreGate.
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.
This class groups all DetDescr information related to a CaloCell.
Constant< int > m_degree
Calibration constant: The interpolation degree.
virtual void makeTheCorrection(const Context &myctx, xAOD::CaloCluster *cluster, const CaloDetDescrElement *elt, float eta, float adj_eta, float phi, float adj_phi, CaloSampling::CaloSample samp) const override
Virtual function for the correction-specific code.
Constant< float > m_etamax_crack
Constant< bool > m_use_raw_eta_boundaries
virtual bool isGoodPhi(float eta, float phi) const
virtual StatusCode setCaloCellContainerName(const std::string &name) override
Change the name of the CaloCellContainer used by this tool.
virtual StatusCode initialize() override
Standard Gaudi initialize method.
Constant< float > m_etamin_crack
Calibration constants: The range over which this correction is defined.
Constant< CxxUtils::Array< 2 > > m_correctionGoodPhi
Calibration constant: The tabulated array of correction weights, A and alpha.
Constant< CxxUtils::Array< 2 > > m_correctionBadPhi
Constant< bool > m_use_raw_eta
Calibration constant: If true, tabulated values are in terms of raw (local) eta.
SG::ReadHandleKey< CaloCellContainer > m_cells_name
Property: The name of the container in which to look to find tile cells.
Read-only multidimensional array.
DataModel_detail::const_iterator< DataVector > const_iterator
Polynomial interpolation in a table.
float interpolate(const CaloRec::Array< 2 > &a, float x, unsigned int degree, unsigned int ycol=1, const CaloRec::Array< 1 > ®ions=CaloRec::Array< 1 >(), int n_points=-1, bool fixZero=false)
Polynomial interpolation in a table.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
const EventContext & ctx() const