CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HighETPhotonsFilterAlgo.cc
Go to the documentation of this file.
3 
4 using namespace edm;
5 using namespace std;
6 
7 
9 
10  //set constants
11  FILTER_ETA_MAX_=2.5;
12  //parameters
13  sumETThreshold_=(float)iConfig.getParameter<double>("sumETThreshold");
14  seedETThreshold_=(float)iConfig.getParameter<double>("seedETThreshold");
15  nonPhotETMax_=(float)iConfig.getParameter<double>("nonPhotETMax");
16  isoConeSize_=(float)iConfig.getParameter<double>("isoConeSize");
17 
18 
19 }
20 
22 }
23 
24 
26 
28  iEvent.getByLabel("genParticles",genParsHandle);
29  vector<reco::GenParticle> genPars=*genParsHandle;
30 
31  for (uint32_t ig=0;ig<genPars.size();ig++) {
32  reco::GenParticle gp=genPars.at(ig);
33  //look for seeds
34  if (fabs(gp.pdgId())!=22) continue;
35  if (gp.status()!=1) continue;
36  if (gp.et()<seedETThreshold_) continue;
37  //found a seed
38  float photetsum=gp.et();
39  float nonphotetsum=0;
40  for (uint32_t jg=0;jg<genPars.size();jg++) {
41  if (ig==jg) continue;
42  reco::GenParticle opar=genPars.at(jg);
43  if (opar.status()!=1) continue;
44  float dr=deltaR(gp,opar);
45  if (dr>=isoConeSize_) continue;
46  if (fabs(opar.pdgId())==22) {
47  photetsum+=opar.et();
48  } else {
49  nonphotetsum+=opar.et();
50  }
51  }
52  //check that photon energy exceeds threshold, and isolation
53  //energy is below threshold
54  if (photetsum>sumETThreshold_ && nonphotetsum<nonPhotETMax_) return true;
55  }
56  return false;
57 
58 }
59 
60 
HighETPhotonsFilterAlgo(const edm::ParameterSet &)
T getParameter(std::string const &) const
virtual int pdgId() const
PDG identifier.
virtual double et() const
transverse energy
virtual int status() const
status word
int iEvent
Definition: GenABIO.cc:230
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:420
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
bool filter(const edm::Event &iEvent)