test
CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Private Attributes
EGExtraInfoModifierFromDB Class Reference
Inheritance diagram for EGExtraInfoModifierFromDB:
ModifyObjectValueBase

Classes

struct  electron_config
 
struct  photon_config
 

Public Types

typedef std::pair
< edm::InputTag,
ValMapFloatToken
ValMapFloatTagTokenPair
 
typedef edm::EDGetTokenT
< edm::ValueMap< float > > 
ValMapFloatToken
 
typedef std::pair
< edm::InputTag,
ValMapIntToken
ValMapIntTagTokenPair
 
typedef edm::EDGetTokenT
< edm::ValueMap< int > > 
ValMapIntToken
 

Public Member Functions

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

Private Attributes

bool applyExtraHighEnergyProtection_
 
bool autoDetectBunchSpacing_
 
int bunchspacing_
 
edm::InputTag bunchspacingTag_
 
edm::EDGetTokenT< unsigned int > bunchSpacingToken_
 
electron_config e_conf
 
std::vector< const GBRForestD * > e_forestH_mean_
 
std::vector< const GBRForestD * > e_forestH_sigma_
 
std::unordered_map< unsigned,
edm::Handle< edm::ValueMap
< int > > > 
ele_int_vmaps
 
std::unordered_map< unsigned,
edm::Handle< edm::ValueMap
< float > > > 
ele_vmaps
 
std::unordered_map< unsigned,
edm::Ptr< reco::GsfElectron > > 
eles_by_oop
 
const GBRForestep_forestH_weight_
 
const edm::EventSetupiSetup_
 
int nVtx_
 
photon_config ph_conf
 
std::vector< const GBRForestD * > ph_forestH_mean_
 
std::vector< const GBRForestD * > ph_forestH_sigma_
 
std::unordered_map< unsigned,
edm::Handle< edm::ValueMap
< int > > > 
pho_int_vmaps
 
std::unordered_map< unsigned,
edm::Handle< edm::ValueMap
< float > > > 
pho_vmaps
 
std::unordered_map< unsigned,
edm::Ptr< reco::Photon > > 
phos_by_oop
 
edm::InputTag rhoTag_
 
edm::EDGetTokenT< double > rhoToken_
 
float rhoValue_
 
edm::Handle
< reco::VertexCollection
vtxH_
 
edm::InputTag vtxTag_
 
edm::EDGetTokenT
< reco::VertexCollection
vtxToken_
 

Detailed Description

Definition at line 28 of file EGExtraInfoModifierFromDB.cc.

Member Typedef Documentation

Definition at line 32 of file EGExtraInfoModifierFromDB.cc.

Definition at line 30 of file EGExtraInfoModifierFromDB.cc.

Definition at line 33 of file EGExtraInfoModifierFromDB.cc.

Definition at line 31 of file EGExtraInfoModifierFromDB.cc.

Constructor & Destructor Documentation

EGExtraInfoModifierFromDB::EGExtraInfoModifierFromDB ( const edm::ParameterSet conf)

Definition at line 111 of file EGExtraInfoModifierFromDB.cc.

References EGExtraInfoModifierFromDB::electron_config::condnames_mean_25ns, EGExtraInfoModifierFromDB::photon_config::condnames_mean_25ns, EGExtraInfoModifierFromDB::electron_config::condnames_mean_50ns, EGExtraInfoModifierFromDB::photon_config::condnames_mean_50ns, EGExtraInfoModifierFromDB::electron_config::condnames_sigma_25ns, EGExtraInfoModifierFromDB::photon_config::condnames_sigma_25ns, EGExtraInfoModifierFromDB::electron_config::condnames_sigma_50ns, EGExtraInfoModifierFromDB::photon_config::condnames_sigma_50ns, EGExtraInfoModifierFromDB::electron_config::condnames_weight_25ns, EGExtraInfoModifierFromDB::electron_config::condnames_weight_50ns, constexpr, EGExtraInfoModifierFromDB::electron_config::electron_src, HI_PhotonSkim_cff::electrons, edm::ParameterSet::exists(), edm::ParameterSet::existsAs(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), ModifyObjectValueBase::name(), HLT_25ns10e33_v2_cff::parameters, EGExtraInfoModifierFromDB::photon_config::photon_src, interactiveExample::photons, AlCaHLTBitMon_QueryRunRegistry::string, EGExtraInfoModifierFromDB::electron_config::tag_float_token_map, EGExtraInfoModifierFromDB::photon_config::tag_float_token_map, EGExtraInfoModifierFromDB::electron_config::tag_int_token_map, and EGExtraInfoModifierFromDB::photon_config::tag_int_token_map.

111  :
112  ModifyObjectValueBase(conf) {
113 
114  bunchspacing_ = 450;
115  autoDetectBunchSpacing_ = conf.getParameter<bool>("autoDetectBunchSpacing");
116  applyExtraHighEnergyProtection_ = conf.getParameter<bool>("applyExtraHighEnergyProtection");
117 
118  rhoTag_ = conf.getParameter<edm::InputTag>("rhoCollection");
119  vtxTag_ = conf.getParameter<edm::InputTag>("vertexCollection");
120 
122  bunchspacingTag_ = conf.getParameter<edm::InputTag>("bunchSpacingTag");
123  } else {
124  bunchspacing_ = conf.getParameter<int>("manualBunchSpacing");
125  }
126 
127  constexpr char electronSrc[] = "electronSrc";
128  constexpr char photonSrc[] = "photonSrc";
129 
130  if(conf.exists("electron_config")) {
131  const edm::ParameterSet& electrons = conf.getParameter<edm::ParameterSet>("electron_config");
132  if( electrons.exists(electronSrc) )
133  e_conf.electron_src = electrons.getParameter<edm::InputTag>(electronSrc);
134 
135  std::vector<std::string> intValueMaps;
136  if ( electrons.existsAs<std::vector<std::string> >("intValueMaps"))
137  intValueMaps = electrons.getParameter<std::vector<std::string> >("intValueMaps");
138 
139  const std::vector<std::string> parameters = electrons.getParameterNames();
140  for( const std::string& name : parameters ) {
141  if( std::string(electronSrc) == name )
142  continue;
143  if( electrons.existsAs<edm::InputTag>(name)) {
144  for (auto vmp : intValueMaps) {
145  if (name == vmp) {
147  break;
148  }
149  }
151  }
152  }
153 
154  e_conf.condnames_mean_50ns = electrons.getParameter<std::vector<std::string> >("regressionKey_50ns");
155  e_conf.condnames_sigma_50ns = electrons.getParameter<std::vector<std::string> >("uncertaintyKey_50ns");
156  e_conf.condnames_mean_25ns = electrons.getParameter<std::vector<std::string> >("regressionKey_25ns");
157  e_conf.condnames_sigma_25ns = electrons.getParameter<std::vector<std::string> >("uncertaintyKey_25ns");
158  e_conf.condnames_weight_50ns = electrons.getParameter<std::string>("combinationKey_50ns");
159  e_conf.condnames_weight_25ns = electrons.getParameter<std::string>("combinationKey_25ns");
160  }
161 
162  if( conf.exists("photon_config") ) {
163  const edm::ParameterSet& photons = conf.getParameter<edm::ParameterSet>("photon_config");
164 
165  if( photons.exists(photonSrc) )
166  ph_conf.photon_src = photons.getParameter<edm::InputTag>(photonSrc);
167 
168  std::vector<std::string> intValueMaps;
169  if ( photons.existsAs<std::vector<std::string> >("intValueMaps"))
170  intValueMaps = photons.getParameter<std::vector<std::string> >("intValueMaps");
171 
172  const std::vector<std::string> parameters = photons.getParameterNames();
173  for( const std::string& name : parameters ) {
174  if( std::string(photonSrc) == name )
175  continue;
176  if( photons.existsAs<edm::InputTag>(name)) {
177  for (auto vmp : intValueMaps) {
178  if (name == vmp) {
180  break;
181  }
182  }
184  }
185  }
186 
187  ph_conf.condnames_mean_50ns = photons.getParameter<std::vector<std::string>>("regressionKey_50ns");
188  ph_conf.condnames_sigma_50ns = photons.getParameter<std::vector<std::string>>("uncertaintyKey_50ns");
189  ph_conf.condnames_mean_25ns = photons.getParameter<std::vector<std::string>>("regressionKey_25ns");
190  ph_conf.condnames_sigma_25ns = photons.getParameter<std::vector<std::string>>("uncertaintyKey_25ns");
191  }
192 }
T getParameter(std::string const &) const
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:186
std::unordered_map< std::string, ValMapIntTagTokenPair > tag_int_token_map
std::unordered_map< std::string, ValMapIntTagTokenPair > tag_int_token_map
std::unordered_map< std::string, ValMapFloatTagTokenPair > tag_float_token_map
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::unordered_map< std::string, ValMapFloatTagTokenPair > tag_float_token_map
#define constexpr
const std::string & name() const
std::pair< edm::InputTag, ValMapFloatToken > ValMapFloatTagTokenPair
std::vector< std::string > getParameterNames() const
edm::EDGetTokenT< edm::ValueMap< int > > ValMapIntToken
ModifyObjectValueBase(const edm::ParameterSet &conf)
std::pair< edm::InputTag, ValMapIntToken > ValMapIntTagTokenPair
edm::EDGetTokenT< edm::ValueMap< float > > ValMapFloatToken
EGExtraInfoModifierFromDB::~EGExtraInfoModifierFromDB ( )
inline

Definition at line 62 of file EGExtraInfoModifierFromDB.cc.

62 {};

Member Function Documentation

void EGExtraInfoModifierFromDB::modifyObject ( reco::GsfElectron ele) const
finaloverridevirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 366 of file EGExtraInfoModifierFromDB.cc.

References funct::abs(), applyExtraHighEnergyProtection_, reco::GsfElectron::classification(), constexpr, reco::GsfElectron::correctMomentum(), reco::deltaPhi(), reco::deltaR(), e_forestH_mean_, e_forestH_sigma_, reco::GsfElectron::ecalDriven(), ep_forestH_weight_, DetId::Forward, GBRForest::GetResponse(), edm::Ref< C, T, F >::isAvailable(), reco::GsfElectron::isEB(), iSetup_, EcalClusterLocal::localCoordsEB(), EcalClusterLocal::localCoordsEE(), bookConverter::max, timingPdfMaker::mean, nVtx_, reco::GsfElectron::p4(), reco::return(), reco::GsfElectron::setCorrectedEcalEnergy(), reco::GsfElectron::setCorrectedEcalEnergyError(), reco::GsfElectron::showerShape(), mathSSE::sqrt(), reco::GsfElectron::superCluster(), reco::GsfElectron::trackerDrivenSeed(), reco::GsfElectron::trackMomentumAtVtx(), reco::GsfElectron::trackMomentumError(), and histoStyle::weight.

Referenced by modifyObject().

366  {
367  // regression calculation needs no additional valuemaps
368 
369  const reco::SuperClusterRef& the_sc = ele.superCluster();
370  const edm::Ptr<reco::CaloCluster>& theseed = the_sc->seed();
371  const int numberOfClusters = the_sc->clusters().size();
372  const bool missing_clusters = !the_sc->clusters()[numberOfClusters-1].isAvailable();
373 
374 
375  //skip HGCal for now
376  if( theseed->seed().det() == DetId::Forward ) return;
377  if( missing_clusters ) return ; // do not apply corrections in case of missing info (slimmed MiniAOD electrons)
378 
379  std::array<float, 33> eval;
380  const double raw_energy = the_sc->rawEnergy();
381  const auto& ess = ele.showerShape();
382 
383  // SET INPUTS
384  eval[0] = nVtx_;
385  eval[1] = raw_energy;
386  eval[2] = the_sc->eta();
387  eval[3] = the_sc->phi();
388  eval[4] = the_sc->etaWidth();
389  eval[5] = the_sc->phiWidth();
390  eval[6] = ess.r9;
391  eval[7] = theseed->energy()/raw_energy;
392  eval[8] = ess.eMax/raw_energy;
393  eval[9] = ess.e2nd/raw_energy;
394  eval[10] = (ess.eLeft + ess.eRight != 0.f ? (ess.eLeft-ess.eRight)/(ess.eLeft+ess.eRight) : 0.f);
395  eval[11] = (ess.eTop + ess.eBottom != 0.f ? (ess.eTop-ess.eBottom)/(ess.eTop+ess.eBottom) : 0.f);
396  eval[12] = ess.sigmaIetaIeta;
397  eval[13] = ess.sigmaIetaIphi;
398  eval[14] = ess.sigmaIphiIphi;
399  eval[15] = std::max(0,numberOfClusters-1);
400 
401  // calculate sub-cluster variables
402  std::vector<float> clusterRawEnergy;
403  clusterRawEnergy.resize(std::max(3, numberOfClusters), 0);
404  std::vector<float> clusterDEtaToSeed;
405  clusterDEtaToSeed.resize(std::max(3, numberOfClusters), 0);
406  std::vector<float> clusterDPhiToSeed;
407  clusterDPhiToSeed.resize(std::max(3, numberOfClusters), 0);
408  float clusterMaxDR = 999.;
409  float clusterMaxDRDPhi = 999.;
410  float clusterMaxDRDEta = 999.;
411  float clusterMaxDRRawEnergy = 0.;
412 
413  size_t iclus = 0;
414  float maxDR = 0;
416  // loop over all clusters that aren't the seed
417  auto clusend = the_sc->clustersEnd();
418  for( auto clus = the_sc->clustersBegin(); clus != clusend; ++clus ) {
419  pclus = *clus;
420 
421  if(theseed == pclus )
422  continue;
423  clusterRawEnergy[iclus] = pclus->energy();
424  clusterDPhiToSeed[iclus] = reco::deltaPhi(pclus->phi(),theseed->phi());
425  clusterDEtaToSeed[iclus] = pclus->eta() - theseed->eta();
426 
427  // find cluster with max dR
428  const auto the_dr = reco::deltaR(*pclus, *theseed);
429  if(the_dr > maxDR) {
430  maxDR = the_dr;
431  clusterMaxDR = maxDR;
432  clusterMaxDRDPhi = clusterDPhiToSeed[iclus];
433  clusterMaxDRDEta = clusterDEtaToSeed[iclus];
434  clusterMaxDRRawEnergy = clusterRawEnergy[iclus];
435  }
436  ++iclus;
437  }
438 
439  eval[16] = clusterMaxDR;
440  eval[17] = clusterMaxDRDPhi;
441  eval[18] = clusterMaxDRDEta;
442  eval[19] = clusterMaxDRRawEnergy/raw_energy;
443  eval[20] = clusterRawEnergy[0]/raw_energy;
444  eval[21] = clusterRawEnergy[1]/raw_energy;
445  eval[22] = clusterRawEnergy[2]/raw_energy;
446  eval[23] = clusterDPhiToSeed[0];
447  eval[24] = clusterDPhiToSeed[1];
448  eval[25] = clusterDPhiToSeed[2];
449  eval[26] = clusterDEtaToSeed[0];
450  eval[27] = clusterDEtaToSeed[1];
451  eval[28] = clusterDEtaToSeed[2];
452 
453  // calculate coordinate variables
454  const bool iseb = ele.isEB();
455  float dummy;
456  int iPhi;
457  int iEta;
458  float cryPhi;
459  float cryEta;
460  EcalClusterLocal _ecalLocal;
461  if (ele.isEB())
462  _ecalLocal.localCoordsEB(*theseed, *iSetup_, cryEta, cryPhi, iEta, iPhi, dummy, dummy);
463  else
464  _ecalLocal.localCoordsEE(*theseed, *iSetup_, cryEta, cryPhi, iEta, iPhi, dummy, dummy);
465 
466  if (iseb) {
467  eval[29] = cryEta;
468  eval[30] = cryPhi;
469  eval[31] = iEta;
470  eval[32] = iPhi;
471  } else {
472  eval[29] = the_sc->preshowerEnergy()/the_sc->rawEnergy();
473  }
474 
475  //magic numbers for MINUIT-like transformation of BDT output onto limited range
476  //(These should be stored inside the conditions object in the future as well)
477  constexpr double meanlimlow = 0.2;
478  constexpr double meanlimhigh = 2.0;
479  constexpr double meanoffset = meanlimlow + 0.5*(meanlimhigh-meanlimlow);
480  constexpr double meanscale = 0.5*(meanlimhigh-meanlimlow);
481 
482  constexpr double sigmalimlow = 0.0002;
483  constexpr double sigmalimhigh = 0.5;
484  constexpr double sigmaoffset = sigmalimlow + 0.5*(sigmalimhigh-sigmalimlow);
485  constexpr double sigmascale = 0.5*(sigmalimhigh-sigmalimlow);
486 
487  int coridx = 0;
488  if (!iseb)
489  coridx = 1;
490 
491  //these are the actual BDT responses
492  double rawmean = e_forestH_mean_[coridx]->GetResponse(eval.data());
493  double rawsigma = e_forestH_sigma_[coridx]->GetResponse(eval.data());
494 
495  //apply transformation to limited output range (matching the training)
496  double mean = meanoffset + meanscale*vdt::fast_sin(rawmean);
497  double sigma = sigmaoffset + sigmascale*vdt::fast_sin(rawsigma);
498 
499  //regression target is ln(Etrue/Eraw)
500  //so corrected energy is ecor=exp(mean)*e, uncertainty is exp(mean)*eraw*sigma=ecor*sigma
501  double ecor = mean*(eval[1]);
502  if (!iseb)
503  ecor = mean*(eval[1]+the_sc->preshowerEnergy());
504  const double sigmacor = sigma*ecor;
505 
506  ele.setCorrectedEcalEnergy(ecor);
507  ele.setCorrectedEcalEnergyError(sigmacor);
508 
509  // E-p combination
510  //std::array<float, 11> eval_ep;
511  float eval_ep[11];
512 
513  const float ep = ele.trackMomentumAtVtx().R();
514  const float tot_energy = the_sc->rawEnergy()+the_sc->preshowerEnergy();
515  const float momentumError = ele.trackMomentumError();
516  const float trkMomentumRelError = ele.trackMomentumError()/ep;
517  const float eOverP = tot_energy*mean/ep;
518  eval_ep[0] = tot_energy*mean;
519  eval_ep[1] = sigma/mean;
520  eval_ep[2] = ep;
521  eval_ep[3] = trkMomentumRelError;
522  eval_ep[4] = sigma/mean/trkMomentumRelError;
523  eval_ep[5] = tot_energy*mean/ep;
524  eval_ep[6] = tot_energy*mean/ep*sqrt(sigma/mean*sigma/mean+trkMomentumRelError*trkMomentumRelError);
525  eval_ep[7] = ele.ecalDriven();
526  eval_ep[8] = ele.trackerDrivenSeed();
527  eval_ep[9] = int(ele.classification());//eleClass;
528  eval_ep[10] = iseb;
529 
530  // CODE FOR FUTURE SEMI_PARAMETRIC
531  //double rawweight = ep_forestH_mean_[coridx]->GetResponse(eval_ep.data());
533  //double weight = meanoffset + meanscale*vdt::fast_sin(rawweight);
535 
536  // CODE FOR STANDARD BDT
537  double weight = 0.;
538  if ( eOverP > 0.025 &&
539  std::abs(ep-ecor) < 15.*std::sqrt( momentumError*momentumError + sigmacor*sigmacor ) &&
540  (!applyExtraHighEnergyProtection_ || ((momentumError < 10.*ep) || (ecor < 200.)))
541  ) {
542  // protection against crazy track measurement
543  weight = ep_forestH_weight_->GetResponse(eval_ep);
544  if(weight>1.)
545  weight = 1.;
546  else if(weight<0.)
547  weight = 0.;
548  }
549 
550  double combinedMomentum = weight*ele.trackMomentumAtVtx().R() + (1.-weight)*ecor;
551  double combinedMomentumError = sqrt(weight*weight*ele.trackMomentumError()*ele.trackMomentumError() + (1.-weight)*(1.-weight)*sigmacor*sigmacor);
552 
553  math::XYZTLorentzVector oldMomentum = ele.p4();
554  math::XYZTLorentzVector newMomentum = math::XYZTLorentzVector(oldMomentum.x()*combinedMomentum/oldMomentum.t(),
555  oldMomentum.y()*combinedMomentum/oldMomentum.t(),
556  oldMomentum.z()*combinedMomentum/oldMomentum.t(),
557  combinedMomentum);
558 
559  //ele.correctEcalEnergy(combinedMomentum, combinedMomentumError);
560  ele.correctMomentum(newMomentum, ele.trackMomentumError(), combinedMomentumError);
561 }
double GetResponse(const float *vector) const
Definition: GBRForest.h:59
const ShowerShape & showerShape() const
Definition: GsfElectron.h:429
bool isAvailable() const
Definition: Ref.h:576
float trackMomentumError() const
Definition: GsfElectron.h:773
const LorentzVector & p4(P4Kind kind) const
Definition: GsfElectron.cc:224
void correctMomentum(const LorentzVector &p4, float trackMomentumError, float p4Error)
Definition: GsfElectron.h:795
math::XYZVectorF trackMomentumAtVtx() const
Definition: GsfElectron.h:289
#define constexpr
bool isEB() const
Definition: GsfElectron.h:350
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
void setCorrectedEcalEnergyError(float newEnergyError)
Definition: GsfElectron.cc:178
T sqrt(T t)
Definition: SSEVec.h:18
virtual SuperClusterRef superCluster() const
reference to a SuperCluster
Definition: GsfElectron.h:182
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:28
double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:22
Classification classification() const
Definition: GsfElectron.h:694
std::vector< const GBRForestD * > e_forestH_mean_
void localCoordsEB(const reco::CaloCluster &bclus, const edm::EventSetup &es, float &etacry, float &phicry, int &ieta, int &iphi, float &thetatilt, float &phitilt) const
return(e1-e2)*(e1-e2)+dp *dp
void setCorrectedEcalEnergy(float newEnergy)
Definition: GsfElectron.cc:181
bool trackerDrivenSeed() const
Definition: GsfElectron.h:187
int weight
Definition: histoStyle.py:50
void localCoordsEE(const reco::CaloCluster &bclus, const edm::EventSetup &es, float &xcry, float &ycry, int &ix, int &iy, float &thetatilt, float &phitilt) const
bool ecalDriven() const
Definition: GsfElectron.cc:173
std::vector< const GBRForestD * > e_forestH_sigma_
void EGExtraInfoModifierFromDB::modifyObject ( reco::Photon pho) const
finaloverridevirtual

this is 1*abs(ieta)/ieta in original training

duplicated variables but this was trained like that

duplicated variables but this was trained like that

Reimplemented from ModifyObjectValueBase.

Definition at line 567 of file EGExtraInfoModifierFromDB.cc.

References funct::abs(), reco::deltaPhi(), reco::Photon::e5x5(), DetId::Forward, reco::Photon::hadronicOverEm(), edm::Ref< C, T, F >::isAvailable(), reco::Photon::isEB(), bookConverter::max, timingPdfMaker::mean, nVtx_, ph_forestH_mean_, ph_forestH_sigma_, reco::Photon::r9(), reco::return(), rhoValue_, reco::Photon::setCorrectedEnergy(), reco::Photon::showerShapeVariables(), and reco::Photon::superCluster().

567  {
568  // regression calculation needs no additional valuemaps
569 
570  std::array<float, 35> eval;
571  const reco::SuperClusterRef& the_sc = pho.superCluster();
572  const edm::Ptr<reco::CaloCluster>& theseed = the_sc->seed();
573 
574  const int numberOfClusters = the_sc->clusters().size();
575  const bool missing_clusters = !the_sc->clusters()[numberOfClusters-1].isAvailable();
576 
577  // skip HGCal for now
578  if( theseed->seed().det() == DetId::Forward ) return;
579  if( missing_clusters ) return ; // do not apply corrections in case of missing info (slimmed MiniAOD electrons)
580 
581  const double raw_energy = the_sc->rawEnergy();
582  const auto& ess = pho.showerShapeVariables();
583 
584  // SET INPUTS
585  eval[0] = raw_energy;
586  eval[1] = pho.r9();
587  eval[2] = the_sc->etaWidth();
588  eval[3] = the_sc->phiWidth();
589  eval[4] = std::max(0,numberOfClusters - 1);
590  eval[5] = pho.hadronicOverEm();
591  eval[6] = rhoValue_;
592  eval[7] = nVtx_;
593  eval[8] = theseed->eta()-the_sc->position().Eta();
594  eval[9] = reco::deltaPhi(theseed->phi(),the_sc->position().Phi());
595  eval[10] = theseed->energy()/raw_energy;
596  eval[11] = ess.e3x3/ess.e5x5;
597  eval[12] = ess.sigmaIetaIeta;
598  eval[13] = ess.sigmaIphiIphi;
599  eval[14] = ess.sigmaIetaIphi/(ess.sigmaIphiIphi*ess.sigmaIetaIeta);
600  eval[15] = ess.maxEnergyXtal/ess.e5x5;
601  eval[16] = ess.e2nd/ess.e5x5;
602  eval[17] = ess.eTop/ess.e5x5;
603  eval[18] = ess.eBottom/ess.e5x5;
604  eval[19] = ess.eLeft/ess.e5x5;
605  eval[20] = ess.eRight/ess.e5x5;
606  eval[21] = ess.e2x5Max/ess.e5x5;
607  eval[22] = ess.e2x5Left/ess.e5x5;
608  eval[23] = ess.e2x5Right/ess.e5x5;
609  eval[24] = ess.e2x5Top/ess.e5x5;
610  eval[25] = ess.e2x5Bottom/ess.e5x5;
611 
612  const bool iseb = pho.isEB();
613  if (iseb) {
614  EBDetId ebseedid(theseed->seed());
615  eval[26] = pho.e5x5()/theseed->energy();
616  int ieta = ebseedid.ieta();
617  int iphi = ebseedid.iphi();
618  eval[27] = ieta;
619  eval[28] = iphi;
620  int signieta = ieta > 0 ? +1 : -1;
621  eval[29] = (ieta-signieta)%5;
622  eval[30] = (iphi-1)%2;
623  // eval[31] = (abs(ieta)<=25)*((ieta-signieta)%25) + (abs(ieta)>25)*((ieta-26*signieta)%20); //%25 is unnescessary in this formula
624  eval[31] = (abs(ieta)<=25)*((ieta-signieta)) + (abs(ieta)>25)*((ieta-26*signieta)%20);
625  eval[32] = (iphi-1)%20;
626  eval[33] = ieta;
627  eval[34] = iphi;
628  } else {
629  EEDetId eeseedid(theseed->seed());
630  eval[26] = the_sc->preshowerEnergy()/raw_energy;
631  eval[27] = the_sc->preshowerEnergyPlane1()/raw_energy;
632  eval[28] = the_sc->preshowerEnergyPlane2()/raw_energy;
633  eval[29] = eeseedid.ix();
634  eval[30] = eeseedid.iy();
635  }
636 
637  //magic numbers for MINUIT-like transformation of BDT output onto limited range
638  //(These should be stored inside the conditions object in the future as well)
639  const double meanlimlow = 0.2;
640  const double meanlimhigh = 2.0;
641  const double meanoffset = meanlimlow + 0.5*(meanlimhigh-meanlimlow);
642  const double meanscale = 0.5*(meanlimhigh-meanlimlow);
643 
644  const double sigmalimlow = 0.0002;
645  const double sigmalimhigh = 0.5;
646  const double sigmaoffset = sigmalimlow + 0.5*(sigmalimhigh-sigmalimlow);
647  const double sigmascale = 0.5*(sigmalimhigh-sigmalimlow);
648 
649  int coridx = 0;
650  if (!iseb)
651  coridx = 1;
652 
653  //these are the actual BDT responses
654  double rawmean = ph_forestH_mean_[coridx]->GetResponse(eval.data());
655  double rawsigma = ph_forestH_sigma_[coridx]->GetResponse(eval.data());
656  //apply transformation to limited output range (matching the training)
657  double mean = meanoffset + meanscale*vdt::fast_sin(rawmean);
658  double sigma = sigmaoffset + sigmascale*vdt::fast_sin(rawsigma);
659 
660  //regression target is ln(Etrue/Eraw)
661  //so corrected energy is ecor=exp(mean)*e, uncertainty is exp(mean)*eraw*sigma=ecor*sigma
662  double ecor = mean*eval[0];
663  if (!iseb)
664  ecor = mean*(eval[0]+the_sc->preshowerEnergy());
665 
666  double sigmacor = sigma*ecor;
667  pho.setCorrectedEnergy(reco::Photon::P4type::regression2, ecor, sigmacor, true);
668 }
bool isAvailable() const
Definition: Ref.h:576
reco::SuperClusterRef superCluster() const
Ref to SuperCluster.
void setCorrectedEnergy(P4type type, float E, float dE, bool toCand=true)
float e5x5() const
Definition: Photon.h:221
std::vector< const GBRForestD * > ph_forestH_sigma_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
float hadronicOverEm() const
the total hadronic over electromagnetic fraction
Definition: Photon.h:203
std::vector< const GBRForestD * > ph_forestH_mean_
double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:22
return(e1-e2)*(e1-e2)+dp *dp
bool isEB() const
Definition: Photon.h:120
float r9() const
Definition: Photon.h:227
const ShowerShape & showerShapeVariables() const
Definition: Photon.h:196
void EGExtraInfoModifierFromDB::modifyObject ( pat::Electron ele) const
finaloverridevirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 563 of file EGExtraInfoModifierFromDB.cc.

References modifyObject().

563  {
564  modifyObject(static_cast<reco::GsfElectron&>(ele));
565 }
void modifyObject(reco::GsfElectron &) const overridefinal
void EGExtraInfoModifierFromDB::modifyObject ( pat::Photon pho) const
finaloverridevirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 670 of file EGExtraInfoModifierFromDB.cc.

References modifyObject().

670  {
671  modifyObject(static_cast<reco::Photon&>(pho));
672 }
void modifyObject(reco::GsfElectron &) const overridefinal
void EGExtraInfoModifierFromDB::setConsumes ( edm::ConsumesCollector sumes)
finaloverridevirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 318 of file EGExtraInfoModifierFromDB.cc.

References autoDetectBunchSpacing_, bunchspacingTag_, bunchSpacingToken_, edm::ConsumesCollector::consumes(), e_conf, EGExtraInfoModifierFromDB::electron_config::electron_src, ph_conf, EGExtraInfoModifierFromDB::photon_config::photon_src, rhoTag_, rhoToken_, EGExtraInfoModifierFromDB::electron_config::tag_float_token_map, EGExtraInfoModifierFromDB::photon_config::tag_float_token_map, EGExtraInfoModifierFromDB::electron_config::tag_int_token_map, EGExtraInfoModifierFromDB::photon_config::tag_int_token_map, EGExtraInfoModifierFromDB::electron_config::tok_electron_src, EGExtraInfoModifierFromDB::photon_config::tok_photon_src, vtxTag_, and vtxToken_.

318  {
319 
320  rhoToken_ = sumes.consumes<double>(rhoTag_);
322 
324  bunchSpacingToken_ = sumes.consumes<unsigned int>(bunchspacingTag_);
325 
326  //setup electrons
327  if(!(empty_tag == e_conf.electron_src))
329 
330  for ( std::unordered_map<std::string, ValMapFloatTagTokenPair>::iterator imap = e_conf.tag_float_token_map.begin();
331  imap != e_conf.tag_float_token_map.end();
332  imap++) {
333  make_consumes(imap->second.first, imap->second.second, sumes);
334  }
335 
336  for ( std::unordered_map<std::string, ValMapIntTagTokenPair>::iterator imap = e_conf.tag_int_token_map.begin();
337  imap != e_conf.tag_int_token_map.end();
338  imap++) {
339  make_int_consumes(imap->second.first, imap->second.second, sumes);
340  }
341 
342  // setup photons
343  if(!(empty_tag == ph_conf.photon_src))
345 
346  for ( std::unordered_map<std::string, ValMapFloatTagTokenPair>::iterator imap = ph_conf.tag_float_token_map.begin();
347  imap != ph_conf.tag_float_token_map.end();
348  imap++) {
349  make_consumes(imap->second.first, imap->second.second, sumes);
350  }
351 
352  for ( std::unordered_map<std::string, ValMapIntTagTokenPair>::iterator imap = ph_conf.tag_int_token_map.begin();
353  imap != ph_conf.tag_int_token_map.end();
354  imap++) {
355  make_int_consumes(imap->second.first, imap->second.second, sumes);
356  }
357 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::unordered_map< std::string, ValMapIntTagTokenPair > tag_int_token_map
std::unordered_map< std::string, ValMapIntTagTokenPair > tag_int_token_map
std::unordered_map< std::string, ValMapFloatTagTokenPair > tag_float_token_map
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
std::unordered_map< std::string, ValMapFloatTagTokenPair > tag_float_token_map
edm::EDGetTokenT< edm::View< pat::Photon > > tok_photon_src
edm::EDGetTokenT< unsigned int > bunchSpacingToken_
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
edm::EDGetTokenT< double > rhoToken_
edm::EDGetTokenT< edm::View< pat::Electron > > tok_electron_src
void EGExtraInfoModifierFromDB::setEvent ( const edm::Event evt)
finaloverridevirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 203 of file EGExtraInfoModifierFromDB.cc.

References autoDetectBunchSpacing_, bunchspacing_, bunchSpacingToken_, e_conf, ele_int_vmaps, ele_vmaps, eles_by_oop, edm::Event::getByToken(), i, edm::EDGetTokenT< T >::isUninitialized(), edm::Ptr< T >::key(), nVtx_, ph_conf, pho_int_vmaps, pho_vmaps, phos_by_oop, rhoToken_, rhoValue_, EGExtraInfoModifierFromDB::electron_config::tag_float_token_map, EGExtraInfoModifierFromDB::photon_config::tag_float_token_map, EGExtraInfoModifierFromDB::electron_config::tag_int_token_map, EGExtraInfoModifierFromDB::photon_config::tag_int_token_map, EGExtraInfoModifierFromDB::electron_config::tok_electron_src, EGExtraInfoModifierFromDB::photon_config::tok_photon_src, vtxH_, and vtxToken_.

203  {
204  eles_by_oop.clear();
205  phos_by_oop.clear();
206  ele_vmaps.clear();
207  ele_int_vmaps.clear();
208  pho_vmaps.clear();
209  pho_int_vmaps.clear();
210 
214 
215  for( unsigned i = 0; i < eles->size(); ++i ) {
216  edm::Ptr<pat::Electron> ptr = eles->ptrAt(i);
217  eles_by_oop[ptr->originalObjectRef().key()] = ptr;
218  }
219  }
220 
221  for (std::unordered_map<std::string, ValMapFloatTagTokenPair>::iterator imap = e_conf.tag_float_token_map.begin();
222  imap != e_conf.tag_float_token_map.end();
223  imap++) {
224  get_product(evt, imap->second.second, ele_vmaps);
225  }
226 
227  for (std::unordered_map<std::string, ValMapIntTagTokenPair>::iterator imap = e_conf.tag_int_token_map.begin();
228  imap != e_conf.tag_int_token_map.end();
229  imap++) {
230  get_product(evt, imap->second.second, ele_int_vmaps);
231  }
232 
236 
237  for( unsigned i = 0; i < phos->size(); ++i ) {
238  edm::Ptr<pat::Photon> ptr = phos->ptrAt(i);
239  phos_by_oop[ptr->originalObjectRef().key()] = ptr;
240  }
241  }
242 
243 
244  for (std::unordered_map<std::string, ValMapFloatTagTokenPair>::iterator imap = ph_conf.tag_float_token_map.begin();
245  imap != ph_conf.tag_float_token_map.end();
246  imap++) {
247  get_product(evt, imap->second.second, pho_vmaps);
248  }
249 
250  for (std::unordered_map<std::string, ValMapIntTagTokenPair>::iterator imap = ph_conf.tag_int_token_map.begin();
251  imap != ph_conf.tag_int_token_map.end();
252  imap++) {
253  get_product(evt, imap->second.second, pho_int_vmaps);
254  }
255 
257  edm::Handle<unsigned int> bunchSpacingH;
258  evt.getByToken(bunchSpacingToken_,bunchSpacingH);
259  bunchspacing_ = *bunchSpacingH;
260  }
261 
262  edm::Handle<double> rhoH;
263  evt.getByToken(rhoToken_, rhoH);
264  rhoValue_ = *rhoH;
265 
266  evt.getByToken(vtxToken_, vtxH_);
267  nVtx_ = vtxH_->size();
268 }
int i
Definition: DBlmapReader.cc:9
std::unordered_map< std::string, ValMapIntTagTokenPair > tag_int_token_map
key_type key() const
Definition: Ptr.h:186
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
std::unordered_map< std::string, ValMapIntTagTokenPair > tag_int_token_map
std::unordered_map< unsigned, edm::Ptr< reco::Photon > > phos_by_oop
std::unordered_map< std::string, ValMapFloatTagTokenPair > tag_float_token_map
std::unordered_map< std::string, ValMapFloatTagTokenPair > tag_float_token_map
std::unordered_map< unsigned, edm::Handle< edm::ValueMap< int > > > pho_int_vmaps
std::unordered_map< unsigned, edm::Handle< edm::ValueMap< float > > > pho_vmaps
std::unordered_map< unsigned, edm::Ptr< reco::GsfElectron > > eles_by_oop
std::unordered_map< unsigned, edm::Handle< edm::ValueMap< float > > > ele_vmaps
edm::EDGetTokenT< edm::View< pat::Photon > > tok_photon_src
edm::EDGetTokenT< unsigned int > bunchSpacingToken_
edm::Handle< reco::VertexCollection > vtxH_
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
bool isUninitialized() const
Definition: EDGetToken.h:73
std::unordered_map< unsigned, edm::Handle< edm::ValueMap< int > > > ele_int_vmaps
edm::EDGetTokenT< double > rhoToken_
edm::EDGetTokenT< edm::View< pat::Electron > > tok_electron_src
void EGExtraInfoModifierFromDB::setEventContent ( const edm::EventSetup evs)
finaloverridevirtual

Reimplemented from ModifyObjectValueBase.

Definition at line 270 of file EGExtraInfoModifierFromDB.cc.

References bunchspacing_, EGExtraInfoModifierFromDB::electron_config::condnames_mean_25ns, EGExtraInfoModifierFromDB::photon_config::condnames_mean_25ns, EGExtraInfoModifierFromDB::electron_config::condnames_mean_50ns, EGExtraInfoModifierFromDB::photon_config::condnames_mean_50ns, EGExtraInfoModifierFromDB::electron_config::condnames_sigma_25ns, EGExtraInfoModifierFromDB::photon_config::condnames_sigma_25ns, EGExtraInfoModifierFromDB::electron_config::condnames_sigma_50ns, EGExtraInfoModifierFromDB::photon_config::condnames_sigma_50ns, EGExtraInfoModifierFromDB::electron_config::condnames_weight_25ns, EGExtraInfoModifierFromDB::electron_config::condnames_weight_50ns, e_conf, e_forestH_mean_, e_forestH_sigma_, ep_forestH_weight_, edm::EventSetup::get(), iSetup_, ph_conf, ph_forestH_mean_, ph_forestH_sigma_, edm::ESHandle< class >::product(), and AlCaHLTBitMon_QueryRunRegistry::string.

270  {
271 
272  iSetup_ = &evs;
273 
274  edm::ESHandle<GBRForestD> forestDEH;
275  edm::ESHandle<GBRForest> forestEH;
276 
277  const std::vector<std::string> ph_condnames_mean = (bunchspacing_ == 25) ? ph_conf.condnames_mean_25ns : ph_conf.condnames_mean_50ns;
278  const std::vector<std::string> ph_condnames_sigma = (bunchspacing_ == 25) ? ph_conf.condnames_sigma_25ns : ph_conf.condnames_sigma_50ns;
279 
280  unsigned int ncor = ph_condnames_mean.size();
281  for (unsigned int icor=0; icor<ncor; ++icor) {
282  evs.get<GBRDWrapperRcd>().get(ph_condnames_mean[icor], forestDEH);
283  ph_forestH_mean_.push_back(forestDEH.product());
284  evs.get<GBRDWrapperRcd>().get(ph_condnames_sigma[icor], forestDEH);
285  ph_forestH_sigma_.push_back(forestDEH.product());
286  }
287 
288  const std::vector<std::string> e_condnames_mean = (bunchspacing_ == 25) ? e_conf.condnames_mean_25ns : e_conf.condnames_mean_50ns;
289  const std::vector<std::string> e_condnames_sigma = (bunchspacing_ == 25) ? e_conf.condnames_sigma_25ns : e_conf.condnames_sigma_50ns;
290  const std::string ep_condnames_weight = (bunchspacing_ == 25) ? e_conf.condnames_weight_25ns : e_conf.condnames_weight_50ns;
291 
292  unsigned int encor = e_condnames_mean.size();
293  evs.get<GBRWrapperRcd>().get(ep_condnames_weight, forestEH);
294  ep_forestH_weight_ = forestEH.product();
295 
296  for (unsigned int icor=0; icor<encor; ++icor) {
297  evs.get<GBRDWrapperRcd>().get(e_condnames_mean[icor], forestDEH);
298  e_forestH_mean_.push_back(forestDEH.product());
299  evs.get<GBRDWrapperRcd>().get(e_condnames_sigma[icor], forestDEH);
300  e_forestH_sigma_.push_back(forestDEH.product());
301  }
302 }
std::vector< const GBRForestD * > ph_forestH_sigma_
std::vector< const GBRForestD * > ph_forestH_mean_
const T & get() const
Definition: EventSetup.h:56
T const * product() const
Definition: ESHandle.h:86
std::vector< const GBRForestD * > e_forestH_mean_
std::vector< const GBRForestD * > e_forestH_sigma_

Member Data Documentation

bool EGExtraInfoModifierFromDB::applyExtraHighEnergyProtection_
private

Definition at line 96 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject().

bool EGExtraInfoModifierFromDB::autoDetectBunchSpacing_
private

Definition at line 85 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes(), and setEvent().

int EGExtraInfoModifierFromDB::bunchspacing_
private

Definition at line 86 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent(), and setEventContent().

edm::InputTag EGExtraInfoModifierFromDB::bunchspacingTag_
private

Definition at line 87 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes().

edm::EDGetTokenT<unsigned int> EGExtraInfoModifierFromDB::bunchSpacingToken_
private

Definition at line 88 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes(), and setEvent().

electron_config EGExtraInfoModifierFromDB::e_conf
private

Definition at line 76 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes(), setEvent(), and setEventContent().

std::vector<const GBRForestD*> EGExtraInfoModifierFromDB::e_forestH_mean_
private

Definition at line 102 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEventContent().

std::vector<const GBRForestD*> EGExtraInfoModifierFromDB::e_forestH_sigma_
private

Definition at line 103 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEventContent().

std::unordered_map<unsigned,edm::Handle<edm::ValueMap<int> > > EGExtraInfoModifierFromDB::ele_int_vmaps
private

Definition at line 80 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent().

std::unordered_map<unsigned,edm::Handle<edm::ValueMap<float> > > EGExtraInfoModifierFromDB::ele_vmaps
private

Definition at line 79 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent().

std::unordered_map<unsigned,edm::Ptr<reco::GsfElectron> > EGExtraInfoModifierFromDB::eles_by_oop
private

Definition at line 78 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent().

const GBRForest* EGExtraInfoModifierFromDB::ep_forestH_weight_
private

Definition at line 104 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEventContent().

const edm::EventSetup* EGExtraInfoModifierFromDB::iSetup_
private

Definition at line 98 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEventContent().

int EGExtraInfoModifierFromDB::nVtx_
private

Definition at line 92 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEvent().

photon_config EGExtraInfoModifierFromDB::ph_conf
private

Definition at line 77 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes(), setEvent(), and setEventContent().

std::vector<const GBRForestD*> EGExtraInfoModifierFromDB::ph_forestH_mean_
private

Definition at line 100 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEventContent().

std::vector<const GBRForestD*> EGExtraInfoModifierFromDB::ph_forestH_sigma_
private

Definition at line 101 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEventContent().

std::unordered_map<unsigned,edm::Handle<edm::ValueMap<int> > > EGExtraInfoModifierFromDB::pho_int_vmaps
private

Definition at line 83 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent().

std::unordered_map<unsigned,edm::Handle<edm::ValueMap<float> > > EGExtraInfoModifierFromDB::pho_vmaps
private

Definition at line 82 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent().

std::unordered_map<unsigned,edm::Ptr<reco::Photon> > EGExtraInfoModifierFromDB::phos_by_oop
private

Definition at line 81 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent().

edm::InputTag EGExtraInfoModifierFromDB::rhoTag_
private

Definition at line 90 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes().

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

Definition at line 91 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes(), and setEvent().

float EGExtraInfoModifierFromDB::rhoValue_
private

Definition at line 89 of file EGExtraInfoModifierFromDB.cc.

Referenced by modifyObject(), and setEvent().

edm::Handle<reco::VertexCollection> EGExtraInfoModifierFromDB::vtxH_
private

Definition at line 95 of file EGExtraInfoModifierFromDB.cc.

Referenced by setEvent().

edm::InputTag EGExtraInfoModifierFromDB::vtxTag_
private

Definition at line 93 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes().

edm::EDGetTokenT<reco::VertexCollection> EGExtraInfoModifierFromDB::vtxToken_
private

Definition at line 94 of file EGExtraInfoModifierFromDB.cc.

Referenced by setConsumes(), and setEvent().