19 double intercept2DCut,
20 double intercept2DSlope,
21 const std::vector<double>& e1e9Cut,
22 const std::vector<double>& eCOREe9Cut,
23 const std::vector<double>& eSeLCut,
27 m_intercept2DCut(intercept2DCut),
28 m_intercept2DSlope(intercept2DSlope),
29 m_e1e9Cuthi(e1e9Cut[1]),
30 m_eCOREe9Cuthi(eCOREe9Cut[1]),
31 m_eSeLCuthi(eSeLCut[1]),
32 m_e1e9Cutlo(e1e9Cut[0]),
33 m_eCOREe9Cutlo(eCOREe9Cut[0]),
34 m_eSeLCutlo(eSeLCut[0]),
41 double corEta = original.
eta();
44 double lowC = 0.00911;
46 double logSlope = 0.0146;
47 double logIntercept = -0.00988;
48 double sgn = (original.
eta() > 0) ? (1.0) : (-1.0);
51 else if ((logel > 1.25) && (logel <= 2))
52 corEta += (logIntercept + logSlope * logel) * sgn;
64 double corPhi = original.
phi();
74 double corEnergy = original.
energy();
77 double energyCorrect = 0.7397;
78 corEnergy = corEnergy / energyCorrect;
82 double etabounds[30] = {
83 2.846, 2.957, 3.132, 3.307, 3.482, 3.657, 3.833, 4.006, 4.184, 4.357, 4.532, 4.709, 4.882, 5.184};
84 for (
int kk = 0;
kk <= 12;
kk++) {
85 if ((fabs(corEta) < etabounds[
kk + 1]) && (fabs(corEta) > etabounds[
kk])) {
86 ieta = (corEta > 0) ? (kk + 29) : (-kk - 29);
95 double corPx = corEnergy *
cos(corPhi) / cosh(corEta);
96 double corPy = corEnergy *
sin(corPhi) / cosh(corEta);
97 double corPz = corEnergy * tanh(corEta);
110 for (
unsigned int i = 0;
i < SuperClusters->size(); ++
i) {
117 double px = supClus.
energy() *
cos(supClus.
phi()) / cosh(supClus.
eta());
118 double py = supClus.
energy() *
sin(supClus.
phi()) / cosh(supClus.
eta());
119 double pz = supClus.
energy() * tanh(supClus.
eta());
131 bool isAcceptable =
true;
132 isAcceptable = isAcceptable && (e9e25 >
m_e9e25Cut);
134 isAcceptable = isAcceptable && ((e1e9 < m_e1e9Cuthi) && (e1e9 >
m_e1e9Cutlo));
139 theCand.setSuperCluster(theClusRef);
140 RecoECand.push_back(theCand);
const double m_intercept2DCut
static std::vector< std::string > checklist log
const reco::HFValueStruct m_hfvv
const double m_eCOREe9Cuthi
Sin< T >::type sin(const T &t)
const_iterator find(const key_type &k) const
find element with specified reference key
double PUIntercept(int ieta) const
void produce(const edm::Handle< reco::SuperClusterCollection > &SuperClusters, const reco::HFEMClusterShapeAssociationCollection &AssocShapes, reco::RecoEcalCandidateCollection &RecoECand, int nvtx) const
double eta() const
pseudorapidity of cluster centroid
double EnCor(int ieta) const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
reco::RecoEcalCandidate correctEPosition(const reco::SuperCluster &original, const reco::HFEMClusterShape &shape, int nvtx) const
Cos< T >::type cos(const T &t)
double energy() const
cluster energy
double PUSlope(int ieta) const
XYZPointD XYZPoint
point in space with cartesian internal representation
double eSeLCorrected(double es, double el, double pc, double px, double py)
const double m_intercept2DSlope
std::vector< RecoEcalCandidate > RecoEcalCandidateCollection
collectin of RecoEcalCandidate objects
const double m_eCOREe9Cutlo
double phi() const
azimuthal angle of cluster centroid
HFRecoEcalCandidateAlgo(bool correct, double e9e25Cut, double intercept2DCut, double intercept2DSlope, const std::vector< double > &e1e9Cut, const std::vector< double > &eCOREe9Cut, const std::vector< double > &eSeLCut, const reco::HFValueStruct hfvv)