70 |
|
return vec; |
71 |
|
} |
72 |
|
|
73 |
+ |
float deltaPhi( float phi1, float phi2) { |
74 |
+ |
float result = phi1 - phi2; |
75 |
+ |
while (result > M_PI) result -= 2*M_PI; |
76 |
+ |
while (result <= -M_PI) result += 2*M_PI; |
77 |
+ |
return result; |
78 |
+ |
} |
79 |
+ |
|
80 |
|
// useful functions |
81 |
|
float deltaR( const TLorentzVector& v1, const TLorentzVector& v2 ) { |
82 |
|
// deltaR = sqrt ( deltaEta^2 + deltaPhi^2 ) |
83 |
< |
return sqrt(pow(v1.Eta() - v2.Eta(), 2) + pow(v1.Phi() - v2.Phi(), 2) ); |
83 |
> |
return sqrt(pow(v1.Eta() - v2.Eta(), 2) + pow(deltaPhi(v1.Phi(),v2.Phi()), 2) ); |
84 |
|
} |
85 |
|
|
86 |
|
float effectiveAreaElectron( float eta ) { |
298 |
|
|
299 |
|
for(std::vector<susy::Photon>::iterator it = photonVector.begin(); |
300 |
|
it != photonVector.end(); ++it ) { |
301 |
< |
if( !(it->isEE() || it->isEB()) && it->isEBEtaGap() && it->isEBPhiGap() && it->isEERingGap() && it->isEEDeeGap() && it->isEBEEGap() && skim ) |
301 |
> |
if( !(it->isEE() || it->isEB()) && it->momentum.Pt()<20 && it->isEBEtaGap() && it->isEBPhiGap() && it->isEERingGap() && it->isEEDeeGap() && it->isEBEEGap() && skim ) |
302 |
|
continue; |
303 |
|
tree::Photon thisphoton; |
297 |
– |
thisphoton.pt = getPtFromMatchedJet( *it, jetVector, loggingVerbosity ); |
304 |
|
|
305 |
|
thisphoton.chargedIso = chargedHadronIso_corrected(*it, event->rho25); |
306 |
|
thisphoton.neutralIso = neutralHadronIso_corrected(*it, event->rho25); |
307 |
|
thisphoton.photonIso = photonIso_corrected(*it, event->rho25); |
308 |
|
|
309 |
< |
bool loose_photon_barrel = thisphoton.pt>20 |
304 |
< |
&& it->isEB() |
309 |
> |
bool loose_photon_barrel = it->isEB() |
310 |
|
&& it->passelectronveto |
311 |
|
&& it->hadTowOverEm<0.05 |
312 |
|
&& it->sigmaIetaIeta<0.012 |
313 |
|
&& thisphoton.chargedIso<2.6 |
314 |
|
&& thisphoton.neutralIso<3.5+0.04*thisphoton.pt |
315 |
|
&& thisphoton.photonIso<1.3+0.005*thisphoton.pt; |
316 |
< |
bool loose_photon_endcap = thisphoton.pt > 20 |
317 |
< |
&& it->isEE() |
316 |
> |
|
317 |
> |
bool loose_photon_endcap = it->isEE() |
318 |
|
&& it->passelectronveto |
319 |
|
&& it->hadTowOverEm<0.05 |
320 |
|
&& it->sigmaIetaIeta<0.034 |
321 |
|
&& thisphoton.chargedIso<2.3 |
322 |
|
&& thisphoton.neutralIso<2.9+0.04*thisphoton.pt; |
323 |
|
|
324 |
< |
if(!(loose_photon_endcap || loose_photon_barrel || thisphoton.pt > 75 ) && skim ) |
324 |
> |
thisphoton.ptJet = getPtFromMatchedJet( *it, jetVector, loggingVerbosity ); |
325 |
> |
if(!(loose_photon_endcap || loose_photon_barrel || thisphoton.ptJet > 75 ) && skim ) |
326 |
|
continue; |
327 |
+ |
thisphoton.pt = it->momentum.Pt(); |
328 |
|
thisphoton.eta = it->momentum.Eta(); |
329 |
|
thisphoton.phi = it->momentum.Phi(); |
330 |
|
thisphoton.r9 = it->r9; |
488 |
|
genPhoton.push_back( thisGenParticle ); |
489 |
|
break; |
490 |
|
case 11: // electron |
491 |
< |
genElectron.push_back( thisGenParticle ); |
491 |
> |
// Demand a W boson as mother particle of electron |
492 |
> |
if( abs(event->genParticles[it->motherIndex].pdgId) == 24 ) |
493 |
> |
genElectron.push_back( thisGenParticle ); |
494 |
|
break; |
495 |
|
} |
496 |
|
} |