CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
EGRegressionModifierV3 Class Reference
Inheritance diagram for EGRegressionModifierV3:
ModifyObjectValueBase

Classes

struct  EleRegs
 
struct  PhoRegs
 

Public Member Functions

 EGRegressionModifierV3 (const edm::ParameterSet &conf, edm::ConsumesCollector &cc)
 
void modifyObject (pat::Electron &) const final
 
void modifyObject (pat::Photon &) const final
 
void modifyObject (reco::GsfElectron &) const final
 
void modifyObject (reco::Photon &) const final
 
void setEvent (const edm::Event &) final
 
void setEventContent (const edm::EventSetup &) final
 
 ~EGRegressionModifierV3 () override
 
- Public Member Functions inherited from ModifyObjectValueBase
virtual void modifyObject (pat::Jet &) const
 
virtual void modifyObject (pat::Muon &) const
 
virtual void modifyObject (pat::Tau &) const
 
virtual void modifyObject (reco::BaseTau &) const
 
virtual void modifyObject (reco::Jet &) const
 
virtual void modifyObject (reco::Muon &) const
 
 ModifyObjectValueBase (const edm::ParameterSet &conf)
 
const std::string & name () const
 
virtual ~ModifyObjectValueBase ()
 

Private Member Functions

std::array< float, 32 > getRegData (const reco::GsfElectron &ele) const
 
std::array< float, 32 > getRegData (const reco::Photon &pho) const
 
void getSeedCrysCoord (const reco::CaloCluster &clus, int &iEtaOrX, int &iPhiOrY) const
 

Private Attributes

edm::ESHandle< CaloGeometrycaloGeomHandle_
 
std::unique_ptr< EleRegseleRegs_
 
float maxRawEnergyForLowPtEBSigma_
 
float maxRawEnergyForLowPtEESigma_
 
std::unique_ptr< PhoRegsphoRegs_
 
edm::EDGetTokenT< double > rhoToken_
 
float rhoValue_
 
bool useClosestToCentreSeedCrysDef_
 

Detailed Description

Definition at line 22 of file EGRegressionModifierV3.cc.

Constructor & Destructor Documentation

◆ EGRegressionModifierV3()

EGRegressionModifierV3::EGRegressionModifierV3 ( const edm::ParameterSet conf,
edm::ConsumesCollector cc 
)

Definition at line 71 of file EGRegressionModifierV3.cc.

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 }

References eleRegs_, edm::ParameterSet::exists(), edm::ParameterSet::getParameterSet(), and phoRegs_.

◆ ~EGRegressionModifierV3()

EGRegressionModifierV3::~EGRegressionModifierV3 ( )
override

Definition at line 86 of file EGRegressionModifierV3.cc.

86 {}

Member Function Documentation

◆ getRegData() [1/2]

std::array< float, 32 > EGRegressionModifierV3::getRegData ( const reco::GsfElectron ele) const
private

Definition at line 199 of file EGRegressionModifierV3.cc.

199  {
200  std::array<float, 32> data;
201 
202  const reco::SuperClusterRef& superClus = ele.superCluster();
203  const edm::Ptr<reco::CaloCluster>& seedClus = superClus->seed();
204 
205  const bool isEB = ele.isEB();
206  const double rawEnergy = superClus->rawEnergy();
207  const double rawESEnergy = superClus->preshowerEnergy();
208  const int numberOfClusters = superClus->clusters().size();
209  const auto& ssFull5x5 = ele.full5x5_showerShape();
210 
211  float e5x5Inverse = ssFull5x5.e5x5 != 0. ? vdt::fast_inv(ssFull5x5.e5x5) : 0.;
212 
213  data[0] = rawEnergy;
214  data[1] = superClus->etaWidth();
215  data[2] = superClus->phiWidth();
216  data[3] = superClus->seed()->energy() / rawEnergy;
217  data[4] = ssFull5x5.e5x5 / rawEnergy;
218  data[5] = ele.hcalOverEcalBc();
219  data[6] = rhoValue_;
220  data[7] = seedClus->eta() - superClus->position().Eta();
221  data[8] = reco::deltaPhi(seedClus->phi(), superClus->position().Phi());
222  data[9] = ssFull5x5.r9;
223  data[10] = ssFull5x5.sigmaIetaIeta;
224  data[11] = ssFull5x5.sigmaIetaIphi;
225  data[12] = ssFull5x5.sigmaIphiIphi;
226  data[13] = ssFull5x5.eMax * e5x5Inverse;
227  data[14] = ssFull5x5.e2nd * e5x5Inverse;
228  data[15] = ssFull5x5.eTop * e5x5Inverse;
229  data[16] = ssFull5x5.eBottom * e5x5Inverse;
230  data[17] = ssFull5x5.eLeft * e5x5Inverse;
231  data[18] = ssFull5x5.eRight * e5x5Inverse;
232  data[19] = ssFull5x5.e2x5Max * e5x5Inverse;
233  data[20] = ssFull5x5.e2x5Left * e5x5Inverse;
234  data[21] = ssFull5x5.e2x5Right * e5x5Inverse;
235  data[22] = ssFull5x5.e2x5Top * e5x5Inverse;
236  data[23] = ssFull5x5.e2x5Bottom * e5x5Inverse;
237  data[24] = ele.nSaturatedXtals();
238  data[25] = std::max(0, numberOfClusters);
239 
240  if (isEB) {
241  int iEta, iPhi;
242  getSeedCrysCoord(*seedClus, iEta, iPhi);
243  int signIEta = iEta > 0 ? +1 : -1;
244  data[26] = iEta;
245  data[27] = iPhi;
246  data[28] = (iEta - signIEta) % 5;
247  data[29] = (iPhi - 1) % 2;
248  const int iEtaCorr = iEta - (iEta > 0 ? +1 : -1);
249  const int iEtaCorr26 = iEta - (iEta > 0 ? +26 : -26);
250  data[30] = std::abs(iEta) <= 25 ? iEtaCorr % 20 : iEtaCorr26 % 20;
251  data[31] = (iPhi - 1) % 20;
252  } else {
253  int iX, iY;
254  getSeedCrysCoord(*seedClus, iX, iY);
255  data[26] = iX;
256  data[27] = iY;
257  data[28] = rawESEnergy / rawEnergy;
258  }
259 
260  return data;
261 }

References funct::abs(), data, reco::deltaPhi(), reco::GsfElectron::ShowerShape::e5x5, reco::CaloCluster::eta(), reco::GsfElectron::full5x5_showerShape(), getSeedCrysCoord(), reco::GsfElectron::hcalOverEcalBc(), L1TowerCalibrationProducer_cfi::iEta, reco::GsfElectron::isEB(), SiStripPI::max, reco::GsfElectron::nSaturatedXtals(), reco::CaloCluster::phi(), rhoValue_, and reco::GsfElectron::superCluster().

Referenced by modifyObject().

◆ getRegData() [2/2]

std::array< float, 32 > EGRegressionModifierV3::getRegData ( const reco::Photon pho) const
private

Definition at line 263 of file EGRegressionModifierV3.cc.

263  {
264  std::array<float, 32> data;
265 
266  const reco::SuperClusterRef& superClus = pho.superCluster();
267  const edm::Ptr<reco::CaloCluster>& seedClus = superClus->seed();
268 
269  const bool isEB = pho.isEB();
270  const double rawEnergy = superClus->rawEnergy();
271  const double rawESEnergy = superClus->preshowerEnergy();
272  const int numberOfClusters = superClus->clusters().size();
273  const auto& ssFull5x5 = pho.full5x5_showerShapeVariables();
274 
275  float e5x5Inverse = ssFull5x5.e5x5 != 0. ? vdt::fast_inv(ssFull5x5.e5x5) : 0.;
276 
277  data[0] = rawEnergy;
278  data[1] = superClus->etaWidth();
279  data[2] = superClus->phiWidth();
280  data[3] = superClus->seed()->energy() / rawEnergy;
281  data[4] = ssFull5x5.e5x5 / rawEnergy;
282  //interestingly enough this differs from electrons where it uses cone based
283  //naively Sam would have thought using cone based is even worse than tower based
284  data[5] = pho.hadronicOverEm();
285  data[6] = rhoValue_;
286  data[7] = seedClus->eta() - superClus->position().Eta();
287  data[8] = reco::deltaPhi(seedClus->phi(), superClus->position().Phi());
288  data[9] = pho.full5x5_r9();
289  data[10] = ssFull5x5.sigmaIetaIeta;
290  //interestingly sigmaIEtaIPhi differs in defination here from
291  //electron & sc definations of sigmaIEtaIPhi
292  data[11] = ssFull5x5.sigmaIetaIphi;
293  data[12] = ssFull5x5.sigmaIphiIphi;
294  data[13] = ssFull5x5.maxEnergyXtal * e5x5Inverse;
295  data[14] = ssFull5x5.e2nd * e5x5Inverse;
296  data[15] = ssFull5x5.eTop * e5x5Inverse;
297  data[16] = ssFull5x5.eBottom * e5x5Inverse;
298  data[17] = ssFull5x5.eLeft * e5x5Inverse;
299  data[18] = ssFull5x5.eRight * e5x5Inverse;
300  data[19] = ssFull5x5.e2x5Max * e5x5Inverse;
301  data[20] = ssFull5x5.e2x5Left * e5x5Inverse;
302  data[21] = ssFull5x5.e2x5Right * e5x5Inverse;
303  data[22] = ssFull5x5.e2x5Top * e5x5Inverse;
304  data[23] = ssFull5x5.e2x5Bottom * e5x5Inverse;
305  data[24] = pho.nSaturatedXtals();
306  data[25] = std::max(0, numberOfClusters);
307 
308  if (isEB) {
309  int iEta, iPhi;
310  getSeedCrysCoord(*seedClus, iEta, iPhi);
311  data[26] = iEta;
312  data[27] = iPhi;
313  int signIEta = iEta > 0 ? +1 : -1;
314  data[28] = (iEta - signIEta) % 5;
315  data[29] = (iPhi - 1) % 2;
316  const int iEtaCorr = iEta - (iEta > 0 ? +1 : -1);
317  const int iEtaCorr26 = iEta - (iEta > 0 ? +26 : -26);
318  data[30] = std::abs(iEta) <= 25 ? iEtaCorr % 20 : iEtaCorr26 % 20;
319  data[31] = (iPhi - 1) % 20;
320  } else {
321  int iX, iY;
322  getSeedCrysCoord(*seedClus, iX, iY);
323  data[26] = iX;
324  data[27] = iY;
325  data[28] = rawESEnergy / rawEnergy;
326  }
327 
328  return data;
329 }

References funct::abs(), data, reco::deltaPhi(), reco::Photon::ShowerShape::e5x5, reco::CaloCluster::eta(), reco::Photon::full5x5_r9(), reco::Photon::full5x5_showerShapeVariables(), getSeedCrysCoord(), reco::Photon::hadronicOverEm(), L1TowerCalibrationProducer_cfi::iEta, reco::Photon::isEB(), SiStripPI::max, reco::Photon::nSaturatedXtals(), reco::CaloCluster::phi(), rhoValue_, and reco::Photon::superCluster().

◆ getSeedCrysCoord()

void EGRegressionModifierV3::getSeedCrysCoord ( const reco::CaloCluster clus,
int &  iEtaOrX,
int &  iPhiOrY 
) const
private

Definition at line 331 of file EGRegressionModifierV3.cc.

331  {
332  iEtaOrX = 0;
333  iPhiOrY = 0;
334 
335  const bool isEB = clus.seed().subdetId() == EcalBarrel;
336 
338  float dummy;
339  if (isEB) {
341  } else {
343  }
344  } else {
345  if (isEB) {
346  const EBDetId ebId(clus.seed());
347  iEtaOrX = ebId.ieta();
348  iPhiOrY = ebId.iphi();
349  } else {
350  const EEDetId eeId(clus.seed());
351  iEtaOrX = eeId.ix();
352  iPhiOrY = eeId.iy();
353  }
354  }
355 }

References caloGeomHandle_, EcalBarrel, EBDetId::ieta(), EEDetId::ix(), egammaTools::localEcalClusterCoordsEB(), egammaTools::localEcalClusterCoordsEE(), reco::CaloCluster::seed(), DetId::subdetId(), and useClosestToCentreSeedCrysDef_.

Referenced by getRegData().

◆ modifyObject() [1/4]

void EGRegressionModifierV3::modifyObject ( pat::Electron ele) const
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 152 of file EGRegressionModifierV3.cc.

152  {
153  modifyObject(static_cast<reco::GsfElectron&>(ele));
154 }

References modifyObject().

◆ modifyObject() [2/4]

void EGRegressionModifierV3::modifyObject ( pat::Photon pho) const
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 197 of file EGRegressionModifierV3.cc.

197 { modifyObject(static_cast<reco::Photon&>(pho)); }

References modifyObject().

◆ modifyObject() [3/4]

void EGRegressionModifierV3::modifyObject ( reco::GsfElectron ele) const
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 99 of file EGRegressionModifierV3.cc.

99  {
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  if (!superClus->clusters().isAvailable())
113  return;
114 
115  //check if fbrem is filled as its needed for E/p combination so abort if its set to the default value
116  //this will be the case for <5 (or current cuts) for miniAOD electrons
118  return;
119 
120  auto regData = getRegData(ele);
121  const float rawEnergy = superClus->rawEnergy();
122  const float rawESEnergy = superClus->preshowerEnergy();
123  //bug here, it should include the ES, kept for backwards compat
124  const float rawEt = rawEnergy * superClus->position().rho() / superClus->position().r();
125  const bool isSaturated = ele.nSaturatedXtals() != 0;
126 
127  const float ecalMean = eleRegs_->ecalOnlyMean(rawEt, ele.isEB(), isSaturated, regData.data());
128  const float ecalMeanCorr = ecalMean > 0. ? ecalMean : 1.0;
129  //as the sample is trained flat in pt, the regression's only source of very high energy
130  //electrons is in the high endcap and therefore it gives a very poor resolution estimate
131  //to any electrons with this energy, regardless of their actual eta
132  //hence this lovely hack
133  if (ele.isEB() && maxRawEnergyForLowPtEBSigma_ >= 0 && eleRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
134  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEBSigma_);
135  }
136  if (!ele.isEB() && maxRawEnergyForLowPtEESigma_ >= 0 && eleRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
137  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEESigma_);
138  }
139  const float ecalSigma = eleRegs_->ecalOnlySigma(rawEt, ele.isEB(), isSaturated, regData.data());
140 
141  const float corrEnergy = (rawEnergy + rawESEnergy) * ecalMeanCorr;
142  const float corrEnergyErr = corrEnergy * ecalSigma;
143 
144  ele.setCorrectedEcalEnergy(corrEnergy);
145  ele.setCorrectedEcalEnergyError(corrEnergyErr);
146 
147  std::pair<float, float> combEnergyAndErr = eleRegs_->epComb.combine(ele);
148  const math::XYZTLorentzVector newP4 = ele.p4() * combEnergyAndErr.first / ele.p4().t();
149  ele.correctMomentum(newP4, ele.trackMomentumError(), combEnergyAndErr.second);
150 }

References reco::GsfElectron::correctMomentum(), eleRegs_, reco::GsfElectron::fbrem(), DetId::Forward, getRegData(), edm::Ref< C, T, F >::isAvailable(), reco::GsfElectron::isEB(), CastorSimpleRecAlgoImpl::isSaturated(), reco::GsfElectron::ClassificationVariables::kDefaultValue, maxRawEnergyForLowPtEBSigma_, maxRawEnergyForLowPtEESigma_, min(), reco::GsfElectron::nSaturatedXtals(), reco::GsfElectron::p4(), reco::GsfElectron::setCorrectedEcalEnergy(), reco::GsfElectron::setCorrectedEcalEnergyError(), reco::GsfElectron::superCluster(), and reco::GsfElectron::trackMomentumError().

Referenced by modifyObject().

◆ modifyObject() [4/4]

void EGRegressionModifierV3::modifyObject ( reco::Photon pho) const
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 156 of file EGRegressionModifierV3.cc.

156  {
157  //check if we have specified an photon regression correction and
158  //return the object unmodified if so
159  if (!phoRegs_)
160  return;
161 
162  const reco::SuperClusterRef& superClus = pho.superCluster();
163 
164  // skip HGCAL for now
165  if (superClus->seed()->seed().det() == DetId::Forward)
166  return;
167 
168  // do not apply corrections in case of missing info (happens for some slimmed MiniAOD photons)
169  if (!superClus->clusters().isAvailable())
170  return;
171 
172  auto regData = getRegData(pho);
173 
174  const float rawEnergy = superClus->rawEnergy();
175  const float rawESEnergy = superClus->preshowerEnergy();
176  //bug here, it should include the ES, kept for backwards compat
177  const float rawEt = rawEnergy * superClus->position().rho() / superClus->position().r();
178  const bool isSaturated = pho.nSaturatedXtals();
179  const float ecalMean = phoRegs_->ecalOnlyMean(rawEt, pho.isEB(), isSaturated, regData.data());
180  const float ecalMeanCorr = ecalMean > 0. ? ecalMean : 1.0;
181 
182  //see the electrons for explaination of this lovely feature
183  if (pho.isEB() && maxRawEnergyForLowPtEBSigma_ >= 0 && phoRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
184  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEBSigma_);
185  }
186  if (!pho.isEB() && maxRawEnergyForLowPtEESigma_ >= 0 && phoRegs_->ecalOnlySigma.useLowEtBin(rawEt, isSaturated)) {
187  regData[0] = std::min(regData[0], maxRawEnergyForLowPtEESigma_);
188  }
189  const float ecalSigma = phoRegs_->ecalOnlySigma(rawEt, pho.isEB(), isSaturated, regData.data());
190 
191  const double corrEnergy = (rawEnergy + rawESEnergy) * ecalMeanCorr;
192  const double corrEnergyErr = corrEnergy * ecalSigma;
193 
194  pho.setCorrectedEnergy(reco::Photon::P4type::regression2, corrEnergy, corrEnergyErr, true);
195 }

References DetId::Forward, getRegData(), edm::Ref< C, T, F >::isAvailable(), reco::Photon::isEB(), CastorSimpleRecAlgoImpl::isSaturated(), maxRawEnergyForLowPtEBSigma_, maxRawEnergyForLowPtEESigma_, min(), reco::Photon::nSaturatedXtals(), phoRegs_, reco::Photon::setCorrectedEnergy(), and reco::Photon::superCluster().

◆ setEvent()

void EGRegressionModifierV3::setEvent ( const edm::Event evt)
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 88 of file EGRegressionModifierV3.cc.

88 { rhoValue_ = evt.get(rhoToken_); }

References edm::Event::get(), rhoToken_, and rhoValue_.

◆ setEventContent()

void EGRegressionModifierV3::setEventContent ( const edm::EventSetup iSetup)
finalvirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 90 of file EGRegressionModifierV3.cc.

90  {
91  if (eleRegs_)
92  eleRegs_->setEventContent(iSetup);
93  if (phoRegs_)
94  phoRegs_->setEventContent(iSetup);
97 }

References caloGeomHandle_, eleRegs_, edm::EventSetup::get(), get, phoRegs_, and useClosestToCentreSeedCrysDef_.

Member Data Documentation

◆ caloGeomHandle_

edm::ESHandle<CaloGeometry> EGRegressionModifierV3::caloGeomHandle_
private

Definition at line 66 of file EGRegressionModifierV3.cc.

Referenced by getSeedCrysCoord(), and setEventContent().

◆ eleRegs_

std::unique_ptr<EleRegs> EGRegressionModifierV3::eleRegs_
private

Definition at line 57 of file EGRegressionModifierV3.cc.

Referenced by EGRegressionModifierV3(), modifyObject(), and setEventContent().

◆ maxRawEnergyForLowPtEBSigma_

float EGRegressionModifierV3::maxRawEnergyForLowPtEBSigma_
private

Definition at line 64 of file EGRegressionModifierV3.cc.

Referenced by modifyObject().

◆ maxRawEnergyForLowPtEESigma_

float EGRegressionModifierV3::maxRawEnergyForLowPtEESigma_
private

Definition at line 65 of file EGRegressionModifierV3.cc.

Referenced by modifyObject().

◆ phoRegs_

std::unique_ptr<PhoRegs> EGRegressionModifierV3::phoRegs_
private

Definition at line 58 of file EGRegressionModifierV3.cc.

Referenced by EGRegressionModifierV3(), modifyObject(), and setEventContent().

◆ rhoToken_

edm::EDGetTokenT<double> EGRegressionModifierV3::rhoToken_
private

Definition at line 61 of file EGRegressionModifierV3.cc.

Referenced by setEvent().

◆ rhoValue_

float EGRegressionModifierV3::rhoValue_
private

Definition at line 60 of file EGRegressionModifierV3.cc.

Referenced by getRegData(), and setEvent().

◆ useClosestToCentreSeedCrysDef_

bool EGRegressionModifierV3::useClosestToCentreSeedCrysDef_
private

Definition at line 63 of file EGRegressionModifierV3.cc.

Referenced by getSeedCrysCoord(), and setEventContent().

reco::CaloCluster::phi
double phi() const
azimuthal angle of cluster centroid
Definition: CaloCluster.h:184
EGRegressionModifierV3::useClosestToCentreSeedCrysDef_
bool useClosestToCentreSeedCrysDef_
Definition: EGRegressionModifierV3.cc:63
reco::GsfElectron::ClassificationVariables::kDefaultValue
constexpr static float kDefaultValue
Definition: GsfElectron.h:721
EBDetId::ieta
int ieta() const
get the crystal ieta
Definition: EBDetId.h:49
reco::GsfElectron::isEB
bool isEB() const
Definition: GsfElectron.h:336
reco::Photon::superCluster
reco::SuperClusterRef superCluster() const override
Ref to SuperCluster.
reco::GsfElectron::correctMomentum
void correctMomentum(const LorentzVector &p4, float trackMomentumError, float p4Error)
Definition: GsfElectron.h:829
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
CaloGeometryRecord
Definition: CaloGeometryRecord.h:30
EBDetId
Definition: EBDetId.h:17
EGRegressionModifierV3::caloGeomHandle_
edm::ESHandle< CaloGeometry > caloGeomHandle_
Definition: EGRegressionModifierV3.cc:66
EGRegressionModifierV3::phoRegs_
std::unique_ptr< PhoRegs > phoRegs_
Definition: EGRegressionModifierV3.cc:58
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:88
EEDetId::ix
int ix() const
Definition: EEDetId.h:77
ModifyObjectValueBase::ModifyObjectValueBase
ModifyObjectValueBase(const edm::ParameterSet &conf)
Definition: ModifyObjectValueBase.h:20
reco::GsfElectron::fbrem
float fbrem() const
Definition: GsfElectron.h:734
EcalBarrel
Definition: EcalSubdetector.h:10
edm::Ref< SuperClusterCollection >
EGRegressionModifierV3::eleRegs_
std::unique_ptr< EleRegs > eleRegs_
Definition: EGRegressionModifierV3.cc:57
reco::GsfElectron::full5x5_showerShape
const ShowerShape & full5x5_showerShape() const
Definition: GsfElectron.h:464
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
CastorSimpleRecAlgoImpl::isSaturated
bool isSaturated(const Digi &digi, const int &maxADCvalue, int ifirst, int n)
Definition: CastorSimpleRecAlgo.cc:97
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
reco::Photon::full5x5_r9
float full5x5_r9() const
Definition: Photon.h:252
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
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:14
EGRegressionModifierV3::rhoToken_
edm::EDGetTokenT< double > rhoToken_
Definition: EGRegressionModifierV3.cc:61
reco::GsfElectron::setCorrectedEcalEnergyError
void setCorrectedEcalEnergyError(float newEnergyError)
Definition: GsfElectron.cc:170
reco::Photon::full5x5_showerShapeVariables
const ShowerShape & full5x5_showerShapeVariables() const
Definition: Photon.h:202
reco::CaloCluster::eta
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
reco::Photon::isEB
bool isEB() const
Definition: Photon.h:119
EGRegressionModifierV3::modifyObject
void modifyObject(reco::GsfElectron &) const final
Definition: EGRegressionModifierV3.cc:99
reco::GsfElectron::hcalOverEcalBc
float hcalOverEcalBc() const
Definition: GsfElectron.h:433
EGRegressionModifierV3::getSeedCrysCoord
void getSeedCrysCoord(const reco::CaloCluster &clus, int &iEtaOrX, int &iPhiOrY) const
Definition: EGRegressionModifierV3.cc:331
reco::GsfElectron::nSaturatedXtals
float nSaturatedXtals() const
Definition: GsfElectron.h:497
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:211
reco::CaloCluster::seed
DetId seed() const
return DetId of seed
Definition: CaloCluster.h:219
edm::Ptr
Definition: AssociationVector.h:31
EGRegressionModifierV3::getRegData
std::array< float, 32 > getRegData(const reco::GsfElectron &ele) const
Definition: EGRegressionModifierV3.cc:199
EGRegressionModifierV3::maxRawEnergyForLowPtEESigma_
float maxRawEnergyForLowPtEESigma_
Definition: EGRegressionModifierV3.cc:65
reco::Photon::hadronicOverEm
float hadronicOverEm() const
the total hadronic over electromagnetic fraction
Definition: Photon.h:208
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
reco::GsfElectron::superCluster
SuperClusterRef superCluster() const override
reference to a SuperCluster
Definition: GsfElectron.h:163
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:808
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:265
DetId::Forward
Definition: DetId.h:30
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:338
edm::InputTag
Definition: InputTag.h:15
edm::ParameterSet::getParameterSet
ParameterSet const & getParameterSet(std::string const &) const
Definition: ParameterSet.cc:2128
reco::Photon::ShowerShape::e5x5
float e5x5
Definition: Photon.h:143