CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
GsfEleDxyCut.cc
Go to the documentation of this file.
6 
8 public:
10 
11  result_type operator()(const reco::GsfElectronPtr&) const override final;
12 
13  void setConsumes(edm::ConsumesCollector&) override final;
14  void getEventContent(const edm::EventBase&) override final;
15 
16  CandidateType candidateType() const override final {
17  return ELECTRON;
18  }
19 
20 private:
23 };
24 
27  "GsfEleDxyCut");
28 
31  _dxyCutValueEB(c.getParameter<double>("dxyCutValueEB")),
32  _dxyCutValueEE(c.getParameter<double>("dxyCutValueEE")),
33  _barrelCutOff(c.getParameter<double>("barrelCutOff")) {
34  edm::InputTag vertextag = c.getParameter<edm::InputTag>("vertexSrc");
35  edm::InputTag vertextagMiniAOD = c.getParameter<edm::InputTag>("vertexSrcMiniAOD");
36  contentTags_.emplace("vertices",vertextag);
37  contentTags_.emplace("verticesMiniAOD",vertextagMiniAOD);
38 }
39 
41  auto vtcs = cc.mayConsume<reco::VertexCollection>(contentTags_["vertices"]);
42  auto vtcsMiniAOD = cc.mayConsume<reco::VertexCollection>(contentTags_["verticesMiniAOD"]);
43  contentTokens_.emplace("vertices",vtcs);
44  contentTokens_.emplace("verticesMiniAOD",vtcsMiniAOD);
45 }
46 
48  // First try AOD, then go to miniAOD. Use the same Handle since collection class is the same.
49  ev.getByLabel(contentTags_["vertices"],_vtxs);
50  if (!_vtxs.isValid())
51  ev.getByLabel(contentTags_["verticesMiniAOD"],_vtxs);
52 }
53 
54 CutApplicatorBase::result_type
56 operator()(const reco::GsfElectronPtr& cand) const{
57  const float dxyCutValue =
58  ( std::abs(cand->superCluster()->position().eta()) < _barrelCutOff ?
60 
61  const reco::VertexCollection& vtxs = *_vtxs;
62  const double dxy = ( vtxs.size() ?
63  cand->gsfTrack()->dxy(vtxs[0].position()) :
64  cand->gsfTrack()->dxy() );
65  return std::abs(dxy) < dxyCutValue;
66 }
T getParameter(std::string const &) const
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
std::unordered_map< std::string, edm::EDGetToken > contentTokens_
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
bool ev
void getEventContent(const edm::EventBase &) overridefinal
Definition: GsfEleDxyCut.cc:47
const double _dxyCutValueEB
Definition: GsfEleDxyCut.cc:21
std::unordered_map< std::string, edm::InputTag > contentTags_
CandidateType candidateType() const overridefinal
Definition: GsfEleDxyCut.cc:16
result_type operator()(const reco::GsfElectronPtr &) const overridefinal
Definition: GsfEleDxyCut.cc:56
edm::Handle< reco::VertexCollection > _vtxs
Definition: GsfEleDxyCut.cc:22
const double _dxyCutValueEE
Definition: GsfEleDxyCut.cc:21
void setConsumes(edm::ConsumesCollector &) overridefinal
Definition: GsfEleDxyCut.cc:40
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isValid() const
Definition: HandleBase.h:75
GsfEleDxyCut(const edm::ParameterSet &c)
Definition: GsfEleDxyCut.cc:29
const double _barrelCutOff
Definition: GsfEleDxyCut.cc:21
string const
Definition: compareJSON.py:14
bool getByLabel(InputTag const &, Handle< T > &) const
Definition: EventBase.h:92
static int position[264][3]
Definition: ReadPGInfo.cc:509
#define DEFINE_EDM_PLUGIN(factory, type, name)