CMS 3D CMS Logo

EGRegressionModifierV3.cc
Go to the documentation of this file.
2 
7 
13 
19 
20 #include <vdt/vdtMath.h>
21 
23 public:
24  struct EleRegs {
26  void setEventContent(const edm::EventSetup& iSetup);
30  };
31 
32  struct PhoRegs {
34  void setEventContent(const edm::EventSetup& iSetup);
37  };
38 
40  ~EGRegressionModifierV3() override;
41 
42  void setEvent(const edm::Event&) final;
43  void setEventContent(const edm::EventSetup&) final;
44 
45  void modifyObject(reco::GsfElectron&) const final;
46  void modifyObject(reco::Photon&) const final;
47 
48  // just calls reco versions
49  void modifyObject(pat::Electron&) const final;
50  void modifyObject(pat::Photon&) const final;
51 
52 private:
53  std::array<float, 32> getRegData(const reco::GsfElectron& ele) const;
54  std::array<float, 32> getRegData(const reco::Photon& pho) const;
55  void getSeedCrysCoord(const reco::CaloCluster& clus, int& iEtaOrX, int& iPhiOrY) const;
56 
57  std::unique_ptr<EleRegs> eleRegs_;
58  std::unique_ptr<PhoRegs> phoRegs_;
59 
60  float rhoValue_;
62 
67 };
68 
70 
72  : ModifyObjectValueBase(conf),
73  rhoValue_(0.),
74  rhoToken_(cc.consumes(conf.getParameter<edm::InputTag>("rhoTag"))),
75  useClosestToCentreSeedCrysDef_(conf.getParameter<bool>("useClosestToCentreSeedCrysDef")),
76  maxRawEnergyForLowPtEBSigma_(conf.getParameter<double>("maxRawEnergyForLowPtEBSigma")),
77  maxRawEnergyForLowPtEESigma_(conf.getParameter<double>("maxRawEnergyForLowPtEESigma")) {
78  if (conf.exists("eleRegs")) {
79  eleRegs_ = std::make_unique<EleRegs>(conf.getParameterSet("eleRegs"), cc);
80  }
81  if (conf.exists("phoRegs")) {
82  phoRegs_ = std::make_unique<PhoRegs>(conf.getParameterSet("phoRegs"), cc);
83  }
84 }
85 
87 
89 
91  if (eleRegs_)
92  eleRegs_->setEventContent(iSetup);
93  if (phoRegs_)
94  phoRegs_->setEventContent(iSetup);
97 }
98 
100  //check if we have specified an electron regression correction and
101  //return the object unmodified if so
102  if (!eleRegs_)
103  return;
104 
105  const reco::SuperClusterRef& superClus = ele.superCluster();
106 
107  // skip HGCAL for now
108  if (superClus->seed()->seed().det() == DetId::Forward)
109  return;
110 
111  // do not apply corrections in case of missing info (slimmed MiniAOD electrons)
112  bool rescaleDependentValues = superClus->clusters().isAvailable();
113 
114  //check if fbrem is filled as its needed for E/p combination so abort if its set to the default value
115  //this will be the case for <5 (or current cuts) for miniAOD electrons
117  return;
118 
119  auto regData = getRegData(ele);
120  const float rawEnergy = superClus->rawEnergy();
121  const float rawESEnergy = superClus->preshowerEnergy();
122  //bug here, it should include the ES, kept for backwards compat
123  const float rawEt = rawEnergy * superClus->position().rho() / superClus->position().r();
124  const bool isSaturated = ele.nSaturatedXtals() != 0;
125 
126  const float ecalMean = eleRegs_->ecalOnlyMean(rawEt, ele.isEB(), isSaturated, regData.data());
127  const float ecalMeanCorr = ecalMean > 0. ? ecalMean : 1.0;
128  //as the sample is trained flat in pt, the regression's only source of very high energy
129  //electrons is in the high endcap and therefore it gives a very poor resolution estimate
130  //to any electrons with this energy, regardless of their actual eta
131  //hence this lovely hack
132  if (ele.isEB() && maxRawEnergyForLowPtEBSigma_ >= 0 && eleRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
133  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEBSigma_);
134  }
135  if (!ele.isEB() && maxRawEnergyForLowPtEESigma_ >= 0 && eleRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
136  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEESigma_);
137  }
138  const float ecalSigma = eleRegs_->ecalOnlySigma(rawEt, ele.isEB(), isSaturated, regData.data());
139 
140  const float corrEnergy = (rawEnergy + rawESEnergy) * ecalMeanCorr;
141  const float corrEnergyErr = corrEnergy * ecalSigma;
142 
143  ele.setCorrectedEcalEnergy(corrEnergy, rescaleDependentValues);
144  ele.setCorrectedEcalEnergyError(corrEnergyErr);
145 
146  std::pair<float, float> combEnergyAndErr = eleRegs_->epComb.combine(ele);
147  const math::XYZTLorentzVector newP4 = ele.p4() * combEnergyAndErr.first / ele.p4().t();
148  ele.correctMomentum(newP4, ele.trackMomentumError(), combEnergyAndErr.second);
149 }
150 
152  modifyObject(static_cast<reco::GsfElectron&>(ele));
153 }
154 
156  //check if we have specified an photon regression correction and
157  //return the object unmodified if so
158  if (!phoRegs_)
159  return;
160 
161  const reco::SuperClusterRef& superClus = pho.superCluster();
162 
163  // skip HGCAL for now
164  if (superClus->seed()->seed().det() == DetId::Forward)
165  return;
166 
167  // do not apply corrections in case of missing info (happens for some slimmed MiniAOD photons)
168  if (!superClus->clusters().isAvailable())
169  return;
170 
171  auto regData = getRegData(pho);
172 
173  const float rawEnergy = superClus->rawEnergy();
174  const float rawESEnergy = superClus->preshowerEnergy();
175  //bug here, it should include the ES, kept for backwards compat
176  const float rawEt = rawEnergy * superClus->position().rho() / superClus->position().r();
177  const bool isSaturated = pho.nSaturatedXtals();
178  const float ecalMean = phoRegs_->ecalOnlyMean(rawEt, pho.isEB(), isSaturated, regData.data());
179  const float ecalMeanCorr = ecalMean > 0. ? ecalMean : 1.0;
180 
181  //see the electrons for explaination of this lovely feature
182  if (pho.isEB() && maxRawEnergyForLowPtEBSigma_ >= 0 && phoRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
183  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEBSigma_);
184  }
185  if (!pho.isEB() && maxRawEnergyForLowPtEESigma_ >= 0 && phoRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
186  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEESigma_);
187  }
188  const float ecalSigma = phoRegs_->ecalOnlySigma(rawEt, pho.isEB(), isSaturated, regData.data());
189 
190  const double corrEnergy = (rawEnergy + rawESEnergy) * ecalMeanCorr;
191  const double corrEnergyErr = corrEnergy * ecalSigma;
192 
193  pho.setCorrectedEnergy(reco::Photon::P4type::regression2, corrEnergy, corrEnergyErr, true);
194 }
195 
196 void EGRegressionModifierV3::modifyObject(pat::Photon& pho) const { modifyObject(static_cast<reco::Photon&>(pho)); }
197 
198 std::array<float, 32> EGRegressionModifierV3::getRegData(const reco::GsfElectron& ele) const {
199  std::array<float, 32> data;
200 
201  const reco::SuperClusterRef& superClus = ele.superCluster();
202  const edm::Ptr<reco::CaloCluster>& seedClus = superClus->seed();
203 
204  const bool isEB = ele.isEB();
205  const double rawEnergy = superClus->rawEnergy();
206  const double rawESEnergy = superClus->preshowerEnergy();
207  const int numberOfClusters = superClus->clusters().size();
208  const auto& ssFull5x5 = ele.full5x5_showerShape();
209 
210  float e5x5Inverse = ssFull5x5.e5x5 != 0. ? vdt::fast_inv(ssFull5x5.e5x5) : 0.;
211 
212  data[0] = rawEnergy;
213  data[1] = superClus->etaWidth();
214  data[2] = superClus->phiWidth();
215  data[3] = superClus->seed()->energy() / rawEnergy;
216  data[4] = ssFull5x5.e5x5 / rawEnergy;
217  data[5] = ele.hcalOverEcalBc();
218  data[6] = rhoValue_;
219  data[7] = seedClus->eta() - superClus->position().Eta();
220  data[8] = reco::deltaPhi(seedClus->phi(), superClus->position().Phi());
221  data[9] = ssFull5x5.r9;
222  data[10] = ssFull5x5.sigmaIetaIeta;
223  data[11] = ssFull5x5.sigmaIetaIphi;
224  data[12] = ssFull5x5.sigmaIphiIphi;
225  data[13] = ssFull5x5.eMax * e5x5Inverse;
226  data[14] = ssFull5x5.e2nd * e5x5Inverse;
227  data[15] = ssFull5x5.eTop * e5x5Inverse;
228  data[16] = ssFull5x5.eBottom * e5x5Inverse;
229  data[17] = ssFull5x5.eLeft * e5x5Inverse;
230  data[18] = ssFull5x5.eRight * e5x5Inverse;
231  data[19] = ssFull5x5.e2x5Max * e5x5Inverse;
232  data[20] = ssFull5x5.e2x5Left * e5x5Inverse;
233  data[21] = ssFull5x5.e2x5Right * e5x5Inverse;
234  data[22] = ssFull5x5.e2x5Top * e5x5Inverse;
235  data[23] = ssFull5x5.e2x5Bottom * e5x5Inverse;
236  data[24] = ele.nSaturatedXtals();
237  data[25] = std::max(0, numberOfClusters);
238 
239  if (isEB) {
240  int iEta, iPhi;
241  getSeedCrysCoord(*seedClus, iEta, iPhi);
242  int signIEta = iEta > 0 ? +1 : -1;
243  data[26] = iEta;
244  data[27] = iPhi;
245  data[28] = (iEta - signIEta) % 5;
246  data[29] = (iPhi - 1) % 2;
247  const int iEtaCorr = iEta - (iEta > 0 ? +1 : -1);
248  const int iEtaCorr26 = iEta - (iEta > 0 ? +26 : -26);
249  data[30] = std::abs(iEta) <= 25 ? iEtaCorr % 20 : iEtaCorr26 % 20;
250  data[31] = (iPhi - 1) % 20;
251  } else {
252  int iX, iY;
253  getSeedCrysCoord(*seedClus, iX, iY);
254  data[26] = iX;
255  data[27] = iY;
256  data[28] = rawESEnergy / rawEnergy;
257  }
258 
259  return data;
260 }
261 
262 std::array<float, 32> EGRegressionModifierV3::getRegData(const reco::Photon& pho) const {
263  std::array<float, 32> data;
264 
265  const reco::SuperClusterRef& superClus = pho.superCluster();
266  const edm::Ptr<reco::CaloCluster>& seedClus = superClus->seed();
267 
268  const bool isEB = pho.isEB();
269  const double rawEnergy = superClus->rawEnergy();
270  const double rawESEnergy = superClus->preshowerEnergy();
271  const int numberOfClusters = superClus->clusters().size();
272  const auto& ssFull5x5 = pho.full5x5_showerShapeVariables();
273 
274  float e5x5Inverse = ssFull5x5.e5x5 != 0. ? vdt::fast_inv(ssFull5x5.e5x5) : 0.;
275 
276  data[0] = rawEnergy;
277  data[1] = superClus->etaWidth();
278  data[2] = superClus->phiWidth();
279  data[3] = superClus->seed()->energy() / rawEnergy;
280  data[4] = ssFull5x5.e5x5 / rawEnergy;
281  //interestingly enough this differs from electrons where it uses cone based
282  //naively Sam would have thought using cone based is even worse than tower based
283  data[5] = pho.hadronicOverEm();
284  data[6] = rhoValue_;
285  data[7] = seedClus->eta() - superClus->position().Eta();
286  data[8] = reco::deltaPhi(seedClus->phi(), superClus->position().Phi());
287  data[9] = pho.full5x5_r9();
288  data[10] = ssFull5x5.sigmaIetaIeta;
289  //interestingly sigmaIEtaIPhi differs in defination here from
290  //electron & sc definations of sigmaIEtaIPhi
291  data[11] = ssFull5x5.sigmaIetaIphi;
292  data[12] = ssFull5x5.sigmaIphiIphi;
293  data[13] = ssFull5x5.maxEnergyXtal * e5x5Inverse;
294  data[14] = ssFull5x5.e2nd * e5x5Inverse;
295  data[15] = ssFull5x5.eTop * e5x5Inverse;
296  data[16] = ssFull5x5.eBottom * e5x5Inverse;
297  data[17] = ssFull5x5.eLeft * e5x5Inverse;
298  data[18] = ssFull5x5.eRight * e5x5Inverse;
299  data[19] = ssFull5x5.e2x5Max * e5x5Inverse;
300  data[20] = ssFull5x5.e2x5Left * e5x5Inverse;
301  data[21] = ssFull5x5.e2x5Right * e5x5Inverse;
302  data[22] = ssFull5x5.e2x5Top * e5x5Inverse;
303  data[23] = ssFull5x5.e2x5Bottom * e5x5Inverse;
304  data[24] = pho.nSaturatedXtals();
305  data[25] = std::max(0, numberOfClusters);
306 
307  if (isEB) {
308  int iEta, iPhi;
309  getSeedCrysCoord(*seedClus, iEta, iPhi);
310  data[26] = iEta;
311  data[27] = iPhi;
312  int signIEta = iEta > 0 ? +1 : -1;
313  data[28] = (iEta - signIEta) % 5;
314  data[29] = (iPhi - 1) % 2;
315  const int iEtaCorr = iEta - (iEta > 0 ? +1 : -1);
316  const int iEtaCorr26 = iEta - (iEta > 0 ? +26 : -26);
317  data[30] = std::abs(iEta) <= 25 ? iEtaCorr % 20 : iEtaCorr26 % 20;
318  data[31] = (iPhi - 1) % 20;
319  } else {
320  int iX, iY;
321  getSeedCrysCoord(*seedClus, iX, iY);
322  data[26] = iX;
323  data[27] = iY;
324  data[28] = rawESEnergy / rawEnergy;
325  }
326 
327  return data;
328 }
329 
330 void EGRegressionModifierV3::getSeedCrysCoord(const reco::CaloCluster& clus, int& iEtaOrX, int& iPhiOrY) const {
331  iEtaOrX = 0;
332  iPhiOrY = 0;
333 
334  const bool isEB = clus.seed().subdetId() == EcalBarrel;
335 
337  float dummy;
338  if (isEB) {
340  } else {
342  }
343  } else {
344  if (isEB) {
345  const EBDetId ebId(clus.seed());
346  iEtaOrX = ebId.ieta();
347  iPhiOrY = ebId.iphi();
348  } else {
349  const EEDetId eeId(clus.seed());
350  iEtaOrX = eeId.ix();
351  iPhiOrY = eeId.iy();
352  }
353  }
354 }
355 
357  : ecalOnlyMean(iConfig.getParameterSet("ecalOnlyMean"), cc),
358  ecalOnlySigma(iConfig.getParameterSet("ecalOnlySigma"), cc),
359  epComb(iConfig.getParameterSet("epComb"), std::move(cc)) {}
360 
362  ecalOnlyMean.setEventContent(iSetup);
363  ecalOnlySigma.setEventContent(iSetup);
364  epComb.setEventContent(iSetup);
365 }
366 
368  : ecalOnlyMean(iConfig.getParameterSet("ecalOnlyMean"), cc),
369  ecalOnlySigma(iConfig.getParameterSet("ecalOnlySigma"), cc) {}
370 
372  ecalOnlyMean.setEventContent(iSetup);
373  ecalOnlySigma.setEventContent(iSetup);
374 }
reco::CaloCluster::phi
double phi() const
azimuthal angle of cluster centroid
Definition: CaloCluster.h:184
EGRegressionModifierV3::useClosestToCentreSeedCrysDef_
bool useClosestToCentreSeedCrysDef_
Definition: EGRegressionModifierV3.cc:63
reco::Photon::hadronicOverEm
float hadronicOverEm(int depth=0) const
Definition: Photon.h:233
reco::GsfElectron::ClassificationVariables::kDefaultValue
constexpr static float kDefaultValue
Definition: GsfElectron.h:783
EGRegressionModifierV3::EleRegs::EleRegs
EleRegs(const edm::ParameterSet &iConfig, edm::ConsumesCollector &cc)
Definition: EGRegressionModifierV3.cc:356
EBDetId::ieta
int ieta() const
get the crystal ieta
Definition: EBDetId.h:49
electrons_cff.bool
bool
Definition: electrons_cff.py:366
reco::GsfElectron::isEB
bool isEB() const
Definition: GsfElectron.h:336
reco::Photon::superCluster
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
MessageLogger.h
ESHandle.h
reco::GsfElectron::correctMomentum
void correctMomentum(const LorentzVector &p4, float trackMomentumError, float p4Error)
Definition: GsfElectron.h:892
edm::Ref::isAvailable
bool isAvailable() const
Definition: Ref.h:537
min
T min(T a, T b)
Definition: MathUtil.h:58
reco::deltaPhi
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
lowPtGsfElectrons_cfi.ecalOnlyMean
ecalOnlyMean
Definition: lowPtGsfElectrons_cfi.py:9
edm::EDGetTokenT< double >
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
EBDetId
Definition: EBDetId.h:17
edm
HLT enums.
Definition: AlignableModifier.h:19
EGRegressionModifierV3::caloGeomHandle_
edm::ESHandle< CaloGeometry > caloGeomHandle_
Definition: EGRegressionModifierV3.cc:66
pat::Photon
Analysis-level Photon class.
Definition: Photon.h:46
EBDetId.h
EGRegressionModifierV3::phoRegs_
std::unique_ptr< PhoRegs > phoRegs_
Definition: EGRegressionModifierV3.cc:58
EEDetId.h
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
EGRegressionModifierV3::maxRawEnergyForLowPtEBSigma_
float maxRawEnergyForLowPtEBSigma_
Definition: EGRegressionModifierV3.cc:64
egammaTools::localEcalClusterCoordsEE
void localEcalClusterCoordsEE(const reco::CaloCluster &bclus, const CaloGeometry &geom, float &xcry, float &ycry, int &ix, int &iy, float &thetatilt, float &phitilt)
Definition: EcalClusterLocal.cc:87
EGRegressionModifierV3::PhoRegs
Definition: EGRegressionModifierV3.cc:32
EEDetId::ix
int ix() const
Definition: EEDetId.h:77
reco::GsfElectron::fbrem
float fbrem() const
Definition: GsfElectron.h:796
EcalBarrel
Definition: EcalSubdetector.h:10
edm::Ref< SuperClusterCollection >
EGRegressionModifierV3::eleRegs_
std::unique_ptr< EleRegs > eleRegs_
Definition: EGRegressionModifierV3.cc:57
reco::GsfElectron::hcalOverEcalBc
float hcalOverEcalBc(const ShowerShape &ss, int depth) const
Definition: GsfElectron.h:450
reco::GsfElectron::full5x5_showerShape
const ShowerShape & full5x5_showerShape() const
Definition: GsfElectron.h:496
Photon.h
EGRegressionModifierV3::setEventContent
void setEventContent(const edm::EventSetup &) final
Definition: EGRegressionModifierV3.cc:90
EGRegressionModifierV3::EleRegs
Definition: EGRegressionModifierV3.cc:24
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
ModifyObjectValueBase.h
CastorSimpleRecAlgoImpl::isSaturated
bool isSaturated(const Digi &digi, const int &maxADCvalue, int ifirst, int n)
Definition: CastorSimpleRecAlgo.cc:97
reco::CaloCluster
Definition: CaloCluster.h:31
edm::ESHandle< CaloGeometry >
EpCombinationTool.h
reco::GsfElectron
Definition: GsfElectron.h:35
EGRegressionModifierV3::~EGRegressionModifierV3
~EGRegressionModifierV3() override
Definition: EGRegressionModifierV3.cc:86
GsfElectron.h
DEFINE_EDM_PLUGIN
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: PluginFactory.h:124
EDGetToken.h
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
EEDetId
Definition: EEDetId.h:14
CaloGeometryRecord.h
reco::Photon::full5x5_r9
float full5x5_r9() const
Definition: Photon.h:285
EgammaRegressionContainer.h
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
lowPtGsfElectrons_cfi.ecalOnlySigma
ecalOnlySigma
Definition: lowPtGsfElectrons_cfi.py:16
egammaTools::localEcalClusterCoordsEB
void localEcalClusterCoordsEB(const reco::CaloCluster &bclus, const CaloGeometry &geom, float &etacry, float &phicry, int &ieta, int &iphi, float &thetatilt, float &phitilt)
Definition: EcalClusterLocal.cc:13
EGRegressionModifierV3::rhoToken_
edm::EDGetTokenT< double > rhoToken_
Definition: EGRegressionModifierV3.cc:61
reco::GsfElectron::setCorrectedEcalEnergyError
void setCorrectedEcalEnergyError(float newEnergyError)
Definition: GsfElectron.cc:170
edm::ParameterSet
Definition: ParameterSet.h:47
reco::Photon::full5x5_showerShapeVariables
const ShowerShape & full5x5_showerShapeVariables() const
Definition: Photon.h:210
ModifyObjectValueBase
Definition: ModifyObjectValueBase.h:18
reco::CaloCluster::eta
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
edmplugin::PluginFactory
Definition: PluginFactory.h:34
EGRegressionModifierV3::PhoRegs::setEventContent
void setEventContent(const edm::EventSetup &iSetup)
Definition: EGRegressionModifierV3.cc:371
reco::Photon::isEB
bool isEB() const
Definition: Photon.h:120
EGRegressionModifierV3::modifyObject
void modifyObject(reco::GsfElectron &) const final
Definition: EGRegressionModifierV3.cc:99
edm::EventSetup
Definition: EventSetup.h:58
EGRegressionModifierV3::getSeedCrysCoord
void getSeedCrysCoord(const reco::CaloCluster &clus, int &iEtaOrX, int &iPhiOrY) const
Definition: EGRegressionModifierV3.cc:330
reco::GsfElectron::nSaturatedXtals
float nSaturatedXtals() const
Definition: GsfElectron.h:527
reco::Photon::setCorrectedEnergy
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
get
#define get
cc
EGRegressionModifierV3::rhoValue_
float rhoValue_
Definition: EGRegressionModifierV3.cc:60
reco::GsfElectron::p4
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:217
reco::CaloCluster::seed
DetId seed() const
return DetId of seed
Definition: CaloCluster.h:219
EGRegressionModifierV3::EleRegs::epComb
EpCombinationTool epComb
Definition: EGRegressionModifierV3.cc:29
InputTag.h
edm::Ptr
Definition: AssociationVector.h:31
EGRegressionModifierV3::getRegData
std::array< float, 32 > getRegData(const reco::GsfElectron &ele) const
Definition: EGRegressionModifierV3.cc:198
EGRegressionModifierV3::EleRegs::ecalOnlyMean
EgammaRegressionContainer ecalOnlyMean
Definition: EGRegressionModifierV3.cc:27
ValueMap.h
EcalClusterLocal.h
EGRegressionModifierV3::maxRawEnergyForLowPtEESigma_
float maxRawEnergyForLowPtEESigma_
Definition: EGRegressionModifierV3.cc:65
EGRegressionModifierV3::EGRegressionModifierV3
EGRegressionModifierV3(const edm::ParameterSet &conf, edm::ConsumesCollector &cc)
Definition: EGRegressionModifierV3.cc:71
lowPtGsfElectrons_cfi.epComb
epComb
Definition: lowPtGsfElectrons_cfi.py:23
reco::Photon
Definition: Photon.h:22
EGRegressionModifierV3
Definition: EGRegressionModifierV3.cc:22
EGRegressionModifierV3::EleRegs::ecalOnlySigma
EgammaRegressionContainer ecalOnlySigma
Definition: EGRegressionModifierV3.cc:28
EGRegressionModifierV3::PhoRegs::PhoRegs
PhoRegs(const edm::ParameterSet &iConfig, edm::ConsumesCollector &cc)
Definition: EGRegressionModifierV3.cc:367
edm::getParameterSet
ParameterSet const & getParameterSet(ParameterSetID const &id)
Definition: ParameterSet.cc:862
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
CaloGeometry.h
EgammaRegressionContainer
Definition: EgammaRegressionContainer.h:27
EGRegressionModifierV3::setEvent
void setEvent(const edm::Event &) final
Definition: EGRegressionModifierV3.cc:88
reco::GsfElectron::superCluster
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:163
EGRegressionModifierV3::PhoRegs::ecalOnlySigma
EgammaRegressionContainer ecalOnlySigma
Definition: EGRegressionModifierV3.cc:36
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
L1TowerCalibrationProducer_cfi.iEta
iEta
Definition: L1TowerCalibrationProducer_cfi.py:60
reco::GsfElectron::trackMomentumError
float trackMomentumError() const
Definition: GsfElectron.h:871
pat::Electron
Analysis-level electron class.
Definition: Electron.h:51
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
dummy
Definition: DummySelector.h:38
reco::GsfElectron::setCorrectedEcalEnergy
void setCorrectedEcalEnergy(float newEnergy)
Definition: GsfElectron.cc:174
reco::Photon::nSaturatedXtals
float nSaturatedXtals() const
Definition: Photon.h:306
DetId::Forward
Definition: DetId.h:30
EGRegressionModifierV3::PhoRegs::ecalOnlyMean
EgammaRegressionContainer ecalOnlyMean
Definition: EGRegressionModifierV3.cc:35
edm::Event
Definition: Event.h:73
reco::GsfElectron::ShowerShape::e5x5
float e5x5
Definition: GsfElectron.h:372
edm::Event::get
bool get(ProductID const &oid, Handle< PROD > &result) const
Definition: Event.h:346
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
edm::ParameterSet::getParameterSet
ParameterSet const & getParameterSet(std::string const &) const
Definition: ParameterSet.cc:2128
EpCombinationTool
Definition: EpCombinationTool.h:10
EGRegressionModifierV3::EleRegs::setEventContent
void setEventContent(const edm::EventSetup &iSetup)
Definition: EGRegressionModifierV3.cc:361
reco::Photon::ShowerShape::e5x5
float e5x5
Definition: Photon.h:144