CMS 3D CMS Logo

UniqueElectrons.h
Go to the documentation of this file.
2 
3 #include <vector>
4 
5 std::vector<reco::GsfElectronRef> uniqueElectronFinder(edm::Handle<reco::GsfElectronCollection>& pElectrons)
6 {
7  const reco::GsfElectronCollection *electrons = pElectrons.product();
8  //Remove duplicate electrons which share a supercluster
9  std::vector<reco::GsfElectronRef> UniqueElectrons;
10  int index =0;
11  for(reco::GsfElectronCollection::const_iterator elec = electrons->begin(); elec != electrons->end();++elec)
12  {
13  const reco::GsfElectronRef electronRef(pElectrons, index);
14  reco::GsfElectronCollection::const_iterator BestDuplicate = elec;
15  for(reco::GsfElectronCollection::const_iterator elec2 = electrons->begin(); elec2 != electrons->end(); ++elec2)
16  {
17  if(elec != elec2)
18  {
19  if(elec->superCluster() == elec2->superCluster())
20  {
21  edm::LogDebug_("", "MySelection.cc", 122)<<"e/p Best duplicate = "<< BestDuplicate->eSuperClusterOverP()
22  <<"\telec2 = "<<elec2->eSuperClusterOverP();
23  if(fabs(BestDuplicate->eSuperClusterOverP()-1.) >= fabs(elec2->eSuperClusterOverP()-1.))
24  {
25  BestDuplicate = elec2;
26  edm::LogDebug_("", "MySelection.cc", 122)<<"elec2 is now best duplicate";
27  }else edm::LogDebug_("", "MySelection.cc", 122)<<"BestDuplicate remains best duplicate";
28  }
29  }
30  }
31  if(BestDuplicate == elec) UniqueElectrons.push_back(electronRef);
32  ++index;
33  }
34  return UniqueElectrons;
35 }
36 
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:74