13 #include "CLHEP/Vector/LorentzVector.h" 23 const std::vector<double>&
e1e9Cut,
25 const std::vector<double>&
eSeLCut,
30 m_intercept2DCut(intercept2DCut),
31 m_intercept2DSlope(intercept2DSlope),
32 m_e1e9Cuthi(e1e9Cut[1]),
33 m_eCOREe9Cuthi(eCOREe9Cut[1]),
34 m_eSeLCuthi(eSeLCut[1]),
35 m_e1e9Cutlo(e1e9Cut[0]),
36 m_eCOREe9Cutlo(eCOREe9Cut[0]),
37 m_eSeLCutlo(eSeLCut[0]),
44 double corEta=original.
eta();
49 double logSlope = 0.0146;
50 double logIntercept=-0.00988;
51 double sgn=(original.
eta()>0)?(1.0):(-1.0);
52 if(logel<=1.25)corEta+=(lowC)*sgn;
53 else if((logel>1.25)&&(logel<=2))corEta+=(logIntercept+logSlope*logel)*sgn;
54 else if(logel>2)corEta+=hiC*
sgn;
63 double corPhi=original.
phi();
73 double corEnergy= original.
energy();
76 double energyCorrect=0.7397;
77 corEnergy= corEnergy/energyCorrect;
81 double etabounds[30]={
82 2.846,2.957,3.132,3.307,3.482,
83 3.657,3.833,4.006,4.184,4.357,
84 4.532,4.709,4.882,5.184};
85 for (
int kk=0;
kk<=12;
kk++){
86 if((fabs(corEta) < etabounds[
kk+1])&&(fabs(corEta) > etabounds[
kk])){
87 ieta = (corEta > 0)?(kk+29):(-kk-29);
94 double corPx=corEnergy*
cos(corPhi)/cosh(corEta);
95 double corPy=corEnergy*
sin(corPhi)/cosh(corEta);
96 double corPz=corEnergy*tanh(corEta);
114 for (
unsigned int i=0;
i < SuperClusters->size(); ++
i) {
123 double pz=supClus.
energy()*tanh(supClus.
eta());
137 bool isAcceptable=
true;
138 isAcceptable=isAcceptable && (e9e25>
m_e9e25Cut);
140 isAcceptable=isAcceptable && ((e1e9< m_e1e9Cuthi)&&(e1e9>
m_e1e9Cutlo));
147 theCand.setSuperCluster(theClusRef);
148 RecoECand.push_back(theCand);
const double m_intercept2DCut
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)