CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
UniqueElectrons.h
Go to the documentation of this file.
1 std::vector<reco::GsfElectronRef> uniqueElectronFinder(edm::Handle<reco::GsfElectronCollection>& pElectrons)
2 {
3  const reco::GsfElectronCollection *electrons = pElectrons.product();
4  //Remove duplicate electrons which share a supercluster
5  std::vector<reco::GsfElectronRef> UniqueElectrons;
6  int index =0;
7  for(reco::GsfElectronCollection::const_iterator elec = electrons->begin(); elec != electrons->end();++elec)
8  {
9  const reco::GsfElectronRef electronRef(pElectrons, index);
10  reco::GsfElectronCollection::const_iterator BestDuplicate = elec;
11  for(reco::GsfElectronCollection::const_iterator elec2 = electrons->begin(); elec2 != electrons->end(); ++elec2)
12  {
13  if(elec != elec2)
14  {
15  if(elec->superCluster() == elec2->superCluster())
16  {
17  edm::LogDebug_("", "MySelection.cc", 122)<<"e/p Best duplicate = "<< BestDuplicate->eSuperClusterOverP()
18  <<"\telec2 = "<<elec2->eSuperClusterOverP();
19  if(fabs(BestDuplicate->eSuperClusterOverP()-1.) >= fabs(elec2->eSuperClusterOverP()-1.))
20  {
21  BestDuplicate = elec2;
22  edm::LogDebug_("", "MySelection.cc", 122)<<"elec2 is now best duplicate";
23  }else edm::LogDebug_("", "MySelection.cc", 122)<<"BestDuplicate remains best duplicate";
24  }
25  }
26  }
27  if(BestDuplicate == elec) UniqueElectrons.push_back(electronRef);
28  ++index;
29  }
30  return UniqueElectrons;
31 }
32 
std::vector< reco::GsfElectronRef > uniqueElectronFinder(edm::Handle< reco::GsfElectronCollection > &pElectrons)
std::vector< GsfElectron > GsfElectronCollection
collection of GsfElectron objects
T const * product() const
Definition: Handle.h:81