CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
ElectronMVAVariableHelper Class Reference
Inheritance diagram for ElectronMVAVariableHelper:
edm::stream::EDProducer<>

Public Member Functions

 ElectronMVAVariableHelper (const edm::ParameterSet &iConfig)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 ~ElectronMVAVariableHelper () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

edm::EDGetTokenT< reco::BeamSpotbeamSpotToken_
 
MultiTokenT< reco::ConversionCollectionconversionsToken_
 
MultiTokenT< edm::View< reco::GsfElectron > > electronsToken_
 
MultiTokenT< reco::VertexCollectionvtxToken_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

Definition at line 17 of file ElectronMVAVariableHelper.cc.

Constructor & Destructor Documentation

ElectronMVAVariableHelper::ElectronMVAVariableHelper ( const edm::ParameterSet iConfig)
explicit

Definition at line 36 of file ElectronMVAVariableHelper.cc.

37  : electronsToken_ ( consumesCollector(), iConfig, "src" , "srcMiniAOD")
38  , vtxToken_ (electronsToken_, consumesCollector(), iConfig, "vertexCollection", "vertexCollectionMiniAOD")
39  , conversionsToken_(electronsToken_, consumesCollector(), iConfig, "conversions" , "conversionsMiniAOD")
40  , beamSpotToken_ (consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamSpot")))
41 {
42  produces<edm::ValueMap<float>>("convVtxFitProb");
43  produces<edm::ValueMap<float>>("kfhits");
44  produces<edm::ValueMap<float>>("kfchi2");
45 }
T getParameter(std::string const &) const
MultiTokenT< reco::VertexCollection > vtxToken_
MultiTokenT< reco::ConversionCollection > conversionsToken_
MultiTokenT< edm::View< reco::GsfElectron > > electronsToken_
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
ElectronMVAVariableHelper::~ElectronMVAVariableHelper ( )
override

Definition at line 47 of file ElectronMVAVariableHelper.cc.

48 {}

Member Function Documentation

void ElectronMVAVariableHelper::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 102 of file ElectronMVAVariableHelper.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and DEFINE_FWK_MODULE.

102  {
103  // electronMVAVariableHelper
105  desc.add<edm::InputTag>("conversions", edm::InputTag("allConversions"));
106  desc.add<edm::InputTag>("src", edm::InputTag("gedGsfElectrons"));
107  desc.add<edm::InputTag>("srcMiniAOD", edm::InputTag("slimmedElectrons","","@skipCurrentProcess"));
108  desc.add<edm::InputTag>("beamSpot", edm::InputTag("offlineBeamSpot"));
109  desc.add<edm::InputTag>("conversionsMiniAOD", edm::InputTag("reducedEgamma","reducedConversions"));
110  desc.add<edm::InputTag>("vertexCollection", edm::InputTag("offlinePrimaryVertices"));
111  desc.add<edm::InputTag>("vertexCollectionMiniAOD", edm::InputTag("offlineSlimmedPrimaryVertices"));
112  descriptions.add("electronMVAVariableHelper", desc);
113 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void ElectronMVAVariableHelper::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 50 of file ElectronMVAVariableHelper.cc.

References ecalDrivenElectronSeedsParameters_cff::beamSpot, beamSpotToken_, reco::Vertex::chi2(), conversions_cfi::conversions, conversionsToken_, electrons_cff::electrons, electronsToken_, edm::Ref< C, T, F >::get(), edm::Event::getByToken(), MultiTokenT< T >::getValidHandle(), edm::Ref< C, T, F >::isAvailable(), edm::Ref< C, T, F >::isNonnull(), edm::Ref< C, T, F >::isNull(), reco::Vertex::isValid(), ConversionTools::matchedConversion(), reco::Vertex::ndof(), reco::BeamSpot::position(), edm::Handle< T >::product(), badGlobalMuonTaggersAOD_cff::vtx, vtxToken_, and writeValueMap().

50  {
51 
52  // get Handles
54  auto vtxH = vtxToken_.getValidHandle(iEvent);
56 
57  edm::Handle<reco::BeamSpot> beamSpotHandle;
58  iEvent.getByToken(beamSpotToken_, beamSpotHandle);
59 
60  const reco::VertexRef vtx(vtxH, 0);
61  const reco::BeamSpot* beamSpot = &*(beamSpotHandle.product());
62 
63  // prepare vector for output
64  std::vector<float> convVtxFitProbVals;
65  std::vector<float> kfhitsVals;
66  std::vector<float> kfchi2Vals;
67 
68  for (auto const& ele : *electrons) {
69 
70  // Conversion vertex fit
72 
73  float convVtxFitProb = -1.;
74  if(!convRef.isNull()) {
75  const reco::Vertex &vtx = convRef.get()->conversionVertex();
76  if (vtx.isValid()) {
77  convVtxFitProb = TMath::Prob( vtx.chi2(), vtx.ndof());
78  }
79  }
80 
81  convVtxFitProbVals.push_back(convVtxFitProb);
82 
83  // kf track related variables
84  bool validKf=false;
85  reco::TrackRef trackRef = ele.closestCtfTrackRef();
86  validKf = trackRef.isAvailable();
87  validKf &= trackRef.isNonnull();
88  float kfchi2 = validKf ? trackRef->normalizedChi2() : 0 ; //ielectron->track()->normalizedChi2() : 0 ;
89  float kfhits = validKf ? trackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
90 
91  kfchi2Vals.push_back(kfchi2);
92  kfhitsVals.push_back(kfhits);
93 
94  }
95 
96  // convert into ValueMap and store
97  writeValueMap(iEvent, electrons, kfchi2Vals, "kfchi2" );
98  writeValueMap(iEvent, electrons, kfhitsVals, "kfhits" );
99  writeValueMap(iEvent, electrons, convVtxFitProbVals, "convVtxFitProb" );
100 }
bool isAvailable() const
Definition: Ref.h:577
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:253
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
bool isValid() const
Tells whether the vertex is valid.
Definition: Vertex.h:68
void writeValueMap(edm::Event &iEvent, const edm::Handle< HandleType > &handle, const std::vector< ValueType > &values, const std::string &label)
Definition: Utils.h:13
double chi2() const
chi-squares
Definition: Vertex.h:98
MultiTokenT< reco::VertexCollection > vtxToken_
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:245
MultiTokenT< reco::ConversionCollection > conversionsToken_
bool isNull() const
Checks for null.
Definition: Ref.h:250
double ndof() const
Definition: Vertex.h:105
edm::Handle< T > getValidHandle(const edm::Event &iEvent)
Definition: MultiToken.h:83
T const * product() const
Definition: Handle.h:81
MultiTokenT< edm::View< reco::GsfElectron > > electronsToken_
const Point & position() const
position
Definition: BeamSpot.h:62
static reco::ConversionRef matchedConversion(const reco::GsfElectron &ele, const edm::Handle< reco::ConversionCollection > &convCol, const math::XYZPoint &beamspot, bool allowCkfMatch=true, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_

Member Data Documentation

edm::EDGetTokenT<reco::BeamSpot> ElectronMVAVariableHelper::beamSpotToken_
private

Definition at line 33 of file ElectronMVAVariableHelper.cc.

Referenced by produce().

MultiTokenT<reco::ConversionCollection> ElectronMVAVariableHelper::conversionsToken_
private

Definition at line 32 of file ElectronMVAVariableHelper.cc.

Referenced by produce().

MultiTokenT<edm::View<reco::GsfElectron> > ElectronMVAVariableHelper::electronsToken_
private

Definition at line 30 of file ElectronMVAVariableHelper.cc.

Referenced by produce().

MultiTokenT<reco::VertexCollection> ElectronMVAVariableHelper::vtxToken_
private

Definition at line 31 of file ElectronMVAVariableHelper.cc.

Referenced by produce().