12 #include "RecoEgamma/EgammaTools/interface/ConversionTools.h" 22 edm::Handle<reco::ConversionCollection> &conversions,
23 edm::Handle<reco::BeamSpot> &beamspot,
double rho){
24 double eta(fabs(photon.eta()));
25 bool barrel(eta<1.4442), endcap(eta>1.566 && eta<2.5);
28 double hadTowOverEmCut(0.028), sigmaIetaIetaCut(0.0107);
29 double chIsoCut(2.67), nuIsoCut(7.23 + exp(0.0028*(photon.pt()+0.5408))), gamIsoCut(2.11 + 0.0014*(photon.pt()));
31 hadTowOverEmCut = 0.093;
32 sigmaIetaIetaCut = 0.0272;
34 nuIsoCut = 8.89 + 0.01725*(photon.pt());
35 gamIsoCut = 3.09 + 0.0091*(photon.pt());
39 if(!barrel && !endcap)
return false;
41 if(photon.hadTowOverEm() >= hadTowOverEmCut || photon.sigmaIetaIeta() >= sigmaIetaIetaCut)
return false;
42 if(electronMatch(photon.superCluster(), electrons, conversions, beamspot->position()))
return false;
44 double chIso = rhoCorrectedIso(pfCh , photon.chargedHadronIso(), photon.eta(), rho);
45 double nuIso = rhoCorrectedIso(pfNu , photon.neutralHadronIso(), photon.eta(), rho);
46 double gamIso = rhoCorrectedIso(pfGam, photon.photonIso() , photon.eta(), rho);
47 if(chIso >= chIsoCut || nuIso >= nuIsoCut || gamIso >= gamIsoCut)
return false;
56 const edm::Handle<reco::ConversionCollection> &conversions,
const math::XYZPoint &beamspot,
57 double lxyMin,
double probMin,
unsigned int nHitsBeforeVtxMax) {
59 if (sc.isNull())
return false;
60 for (std::vector<pat::Electron>::const_iterator it = electrons->begin(); it!=electrons->end(); ++it) {
62 if (it->superCluster()!=sc)
continue;
65 if (it->gsfTrack()->hitPattern().numberOfAllHits(reco::HitPattern::MISSING_INNER_HITS) > 0)
continue;
67 if (it->gsfTrack()->hitPattern().numberOfHits(reco::HitPattern::MISSING_INNER_HITS) > 0)
continue;
70 if (ConversionTools::hasMatchedConversion(*it,conversions,beamspot,lxyMin,probMin,nHitsBeforeVtxMax))
continue;
78 for(
unsigned int i = 0; i < etaHigh.size(); i++)
79 if(fabs(eta) < etaHigh[i] && fabs(eta) > etaLow[i]){
85 std::cout <<
"AHHHHH: couldn't match eta region... eta = " << fabs(eta) << std::endl;
87 }
else return max(isoVal - effA[iEta][isoType_]*rho , 0.);
90 void photon_tools::addEffA(
double etaLow_,
double etaHigh_,
double effA_pfCh_,
double effA_pfNu_,
double effA_pfGa_){
91 etaHigh.push_back( etaHigh_ );
92 etaLow.push_back( etaLow_ );
94 temp.push_back(effA_pfCh_);
95 temp.push_back(effA_pfNu_);
96 temp.push_back(effA_pfGa_);
97 effA.push_back( temp );
102 addEffA( 0.0, 1.0, 0.0234, 0.0053, 0.078 );
103 addEffA( 1.0, 1.479, 0.0189, 0.0130, 0.0629 );
104 addEffA( 1.479, 2.0, 0.0171, 0.0057, 0.0264 );
105 addEffA( 2.0, 2.2, 0.0129, 0.0070, 0.0462 );
106 addEffA( 2.2, 2.3, 0.0110, 0.0152, 0.0740 );
107 addEffA( 2.3, 2.4, 0.0074, 0.0232, 0.0924 );
108 addEffA( 2.4, 99., 0.0035, 0.1709, 0.1484 );