CMS 3D CMS Logo

Functions
SCEnergyCorrections.h File Reference
#include "DataFormats/EgammaReco/interface/BasicClusterFwd.h"
#include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h"
#include "DataFormats/EgammaReco/interface/SuperCluster.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"

Go to the source code of this file.

Functions

reco::CaloClusterPtrVector CaloClusterVectorCopier (const reco::SuperCluster &sc)
 
reco::SuperCluster fBremScCorr (const reco::SuperCluster &sc, const edm::ParameterSet &ps)
 
reco::SuperCluster fEAddScCorr (const reco::SuperCluster &sc, double Ecorr)
 
reco::SuperCluster fEtaScCorr (const reco::SuperCluster &sc)
 
reco::SuperCluster fEtEtaCorr (const reco::SuperCluster &sc, const edm::ParameterSet &ps)
 

Function Documentation

◆ CaloClusterVectorCopier()

reco::CaloClusterPtrVector CaloClusterVectorCopier ( const reco::SuperCluster sc)

Definition at line 103 of file SCEnergyCorrections.h.

103  {
104  reco::CaloClusterPtrVector clusters_v;
105 
106  for (reco::CaloCluster_iterator cluster = sc.clustersBegin(); cluster != sc.clustersEnd(); cluster++) {
107  clusters_v.push_back(*cluster);
108  }
109 
110  return clusters_v;
111 }

References reco::SuperCluster::clustersBegin(), reco::SuperCluster::clustersEnd(), and edm::PtrVector< T >::push_back().

Referenced by fBremScCorr(), fEAddScCorr(), fEtaScCorr(), and fEtEtaCorr().

◆ fBremScCorr()

reco::SuperCluster fBremScCorr ( const reco::SuperCluster sc,
const edm::ParameterSet ps 
)

Definition at line 24 of file SCEnergyCorrections.h.

24  {
25  std::vector<double> fBrem = ps.getParameter<std::vector<double> >("fBremVec");
26  double bremFrLowThr = ps.getParameter<double>("brLinearLowThr");
27  double bremFrHighThr = ps.getParameter<double>("brLinearHighThr");
28 
30  double bremFrac = sc.phiWidth() / sc.etaWidth();
31  double newE = sc.energy();
32  if (fabs(sc.eta()) < 1.479) {
33  reco::SuperCluster fEtaSC = fEtaScCorr(sc);
35  newE = fEtaSC.energy();
36  }
37 
38  if (bremFrac < bremFrLowThr)
39  bremFrac = bremFrLowThr;
40  if (bremFrac < bremFrHighThr)
41  bremFrac = bremFrHighThr;
42 
43  double p0 = fBrem[0];
44  double p1 = fBrem[1];
45  double p2 = fBrem[2];
46  double p3 = fBrem[3];
47  double p4 = fBrem[4];
48  //
49  double threshold = p4;
50 
51  double y = p0 * threshold * threshold + p1 * threshold + p2;
52  double yprime = 2 * p0 * threshold + p1;
53  double a = p3;
54  double b = yprime - 2 * a * threshold;
55  double c = y - a * threshold * threshold - b * threshold;
56 
57  double fCorr = 1;
58  if (bremFrac < threshold)
59  fCorr = p0 * bremFrac * bremFrac + p1 * bremFrac + p2;
60  else
61  fCorr = a * bremFrac * bremFrac + b * bremFrac + c;
62 
63  newE /= fCorr;
64  reco::SuperCluster corrSc(newE, sc.position(), sc.seed(), bcs, sc.preshowerEnergy(), 0., 0.);
65  return corrSc;
66 }

References a, b, HltBtagPostValidation_cff::c, CaloClusterVectorCopier(), reco::CaloCluster::energy(), reco::CaloCluster::eta(), reco::SuperCluster::etaWidth(), fEtaScCorr(), edm::ParameterSet::getParameter(), p1, p2, p3, p4, reco::SuperCluster::phiWidth(), reco::CaloCluster::position(), reco::SuperCluster::preshowerEnergy(), reco::SuperCluster::seed(), remoteMonitoring_LED_IterMethod_cfg::threshold, and detailsBasic3DVector::y.

Referenced by ErsatzMEt::analyze(), and fEtEtaCorr().

◆ fEAddScCorr()

reco::SuperCluster fEAddScCorr ( const reco::SuperCluster sc,
double  Ecorr 
)

Definition at line 95 of file SCEnergyCorrections.h.

95  {
97 
98  double newE = sc.rawEnergy() + Ecorr;
99  reco::SuperCluster corrSc(newE, sc.position(), sc.seed(), bcs, sc.preshowerEnergy(), 0., 0.);
100  return corrSc;
101 }

References CaloClusterVectorCopier(), reco::CaloCluster::position(), reco::SuperCluster::preshowerEnergy(), reco::SuperCluster::rawEnergy(), and reco::SuperCluster::seed().

◆ fEtaScCorr()

reco::SuperCluster fEtaScCorr ( const reco::SuperCluster sc)

Definition at line 8 of file SCEnergyCorrections.h.

8  {
10  double ieta = fabs(sc.eta()) * (5 / 0.087);
11  double p0 = 40.2198;
12  double p1 = -3.03103e-6;
13  double newE;
14  // std::cout << "Corrected E = Raw E * (1+ p1*(ieta - p0)*(ieta - p0))"<< std::endl;
15  if (ieta < p0)
16  newE = sc.rawEnergy();
17  else
18  newE = sc.rawEnergy() / (1 + p1 * (ieta - p0) * (ieta - p0));
19 
20  reco::SuperCluster corrSc(newE, sc.position(), sc.seed(), bcs, sc.preshowerEnergy(), 0., 0.);
21  return corrSc;
22 }

References CaloClusterVectorCopier(), reco::CaloCluster::eta(), LEDCalibrationChannels::ieta, p1, reco::CaloCluster::position(), reco::SuperCluster::preshowerEnergy(), reco::SuperCluster::rawEnergy(), and reco::SuperCluster::seed().

Referenced by ErsatzMEt::analyze(), and fBremScCorr().

◆ fEtEtaCorr()

reco::SuperCluster fEtEtaCorr ( const reco::SuperCluster sc,
const edm::ParameterSet ps 
)

Definition at line 68 of file SCEnergyCorrections.h.

68  {
69  // et -- Et of the SuperCluster (with respect to (0,0,0))
70  // eta -- eta of the SuperCluster
71  std::vector<double> fEtEtaParams = ps.getParameter<std::vector<double> >("fEtEtaParamsVec");
72 
73  reco::SuperCluster fBremSC = fBremScCorr(sc, ps);
75 
76  double eta = sc.eta();
77  double et = fBremSC.energy() / cosh(eta);
78  double fCorr = 0.;
79 
80  double p0 = fEtEtaParams[0] + fEtEtaParams[1] / (et + fEtEtaParams[2]) + fEtEtaParams[3] / (et * et);
81  double p1 = fEtEtaParams[4] + fEtEtaParams[5] / (et + fEtEtaParams[6]) + fEtEtaParams[7] / (et * et);
82  double p2 = fEtEtaParams[8] + fEtEtaParams[9] / (et + fEtEtaParams[10]) + fEtEtaParams[11] / (et * et);
83 
84  fCorr = p0 + p1 * atan(fEtEtaParams[12] * (fEtEtaParams[13] - fabs(eta))) + fEtEtaParams[14] * fabs(eta) +
85  p1 * fEtEtaParams[15] * fabs(eta) + p2 * fEtEtaParams[16] * eta * eta;
86 
87  if (fCorr < 0.5)
88  fCorr = 0.5;
89 
90  double newE = et / (fCorr * cosh(eta));
91  reco::SuperCluster corrSc(newE, sc.position(), sc.seed(), bcs, sc.preshowerEnergy(), 0., 0.);
92  return corrSc;
93 }

References CaloClusterVectorCopier(), EgHLTOffHistBins_cfi::et, PVValHelper::eta, reco::CaloCluster::eta(), fBremScCorr(), edm::ParameterSet::getParameter(), p1, p2, reco::CaloCluster::position(), reco::SuperCluster::preshowerEnergy(), and reco::SuperCluster::seed().

fEtaScCorr
reco::SuperCluster fEtaScCorr(const reco::SuperCluster &sc)
Definition: SCEnergyCorrections.h:8
reco::SuperCluster
Definition: SuperCluster.h:18
edm::PtrVectorItr
Definition: PtrVector.h:51
fBremScCorr
reco::SuperCluster fBremScCorr(const reco::SuperCluster &sc, const edm::ParameterSet &ps)
Definition: SCEnergyCorrections.h:24
reco::SuperCluster::phiWidth
double phiWidth() const
obtain phi and eta width of the Super Cluster
Definition: SuperCluster.h:66
edm::PtrVector< CaloCluster >
PVValHelper::eta
Definition: PVValidationHelpers.h:69
p2
double p2[4]
Definition: TauolaWrapper.h:90
b
double b
Definition: hdecay.h:118
edm::PtrVector::push_back
void push_back(Ptr< T > const &iPtr)
Definition: PtrVector.h:149
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
a
double a
Definition: hdecay.h:119
reco::SuperCluster::seed
const CaloClusterPtr & seed() const
seed BasicCluster
Definition: SuperCluster.h:77
reco::CaloCluster::eta
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
p4
double p4[4]
Definition: TauolaWrapper.h:92
reco::SuperCluster::clustersBegin
CaloCluster_iterator clustersBegin() const
fist iterator over BasicCluster constituents
Definition: SuperCluster.h:86
p1
double p1[4]
Definition: TauolaWrapper.h:89
EgHLTOffHistBins_cfi.et
et
Definition: EgHLTOffHistBins_cfi.py:8
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
reco::CaloCluster::position
const math::XYZPoint & position() const
cluster centroid position
Definition: CaloCluster.h:154
CaloClusterVectorCopier
reco::CaloClusterPtrVector CaloClusterVectorCopier(const reco::SuperCluster &sc)
Definition: SCEnergyCorrections.h:103
reco::SuperCluster::preshowerEnergy
double preshowerEnergy() const
energy deposited in preshower
Definition: SuperCluster.h:61
reco::SuperCluster::rawEnergy
double rawEnergy() const
raw uncorrected energy (sum of energies of component BasicClusters)
Definition: SuperCluster.h:58
detailsBasic3DVector::y
float float y
Definition: extBasic3DVector.h:14
reco::SuperCluster::etaWidth
double etaWidth() const
Definition: SuperCluster.h:67
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
p3
double p3[4]
Definition: TauolaWrapper.h:91
reco::SuperCluster::clustersEnd
CaloCluster_iterator clustersEnd() const
last iterator over BasicCluster constituents
Definition: SuperCluster.h:89
remoteMonitoring_LED_IterMethod_cfg.threshold
threshold
Definition: remoteMonitoring_LED_IterMethod_cfg.py:426
reco::CaloCluster::energy
double energy() const
cluster energy
Definition: CaloCluster.h:149