Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:21:16

0001 //
0002 // Original Authors: Nicholas Wardle, Florian Beaudette
0003 //
0004 #include "RecoParticleFlow/PFProducer/interface/PhotonSelectorAlgo.h"
0005 
0006 PhotonSelectorAlgo::PhotonSelectorAlgo(float choice,
0007                                        float c_Et,
0008                                        float c_iso_track_a,
0009                                        float c_iso_track_b,
0010                                        float c_iso_ecal_a,
0011                                        float c_iso_ecal_b,
0012                                        float c_iso_hcal_a,
0013                                        float c_iso_hcal_b,
0014                                        float c_hoe,
0015                                        float comb_iso,
0016                                        float loose_hoe)
0017     : choice_(choice),
0018       c_Et_(c_Et),
0019       c_iso_track_a_(c_iso_track_a),
0020       c_iso_track_b_(c_iso_track_b),
0021       c_iso_ecal_a_(c_iso_ecal_a),
0022       c_iso_ecal_b_(c_iso_ecal_b),
0023       c_iso_hcal_a_(c_iso_hcal_a),
0024       c_iso_hcal_b_(c_iso_hcal_b),
0025       c_hoe_(c_hoe),
0026       comb_iso_(comb_iso),
0027       loose_hoe_(loose_hoe) {
0028   ;
0029 }
0030 
0031 bool PhotonSelectorAlgo::passPhotonSelection(const reco::Photon& photon) const {
0032   // Photon ET
0033   float photonPt = photon.pt();
0034   if (photonPt < c_Et_)
0035     return false;
0036   if (choice_ < 0.1)  //EGM Loose
0037   {
0038     //std::cout<<"Cuts:"<<c_Et_<<" H/E "<<c_hoe_<<"ECal Iso "<<c_iso_ecal_a_<<"HCal Iso "<<c_iso_hcal_a_<<"Track Iso "<<c_iso_track_a_<<std::endl;
0039     // HoE
0040     if (photon.hadronicOverEm() > c_hoe_)
0041       return false;
0042 
0043     // Track iso
0044     if (photon.trkSumPtHollowConeDR04() > c_iso_track_a_ + c_iso_track_b_ * photonPt)
0045       return false;
0046 
0047     // ECAL iso
0048     if (photon.ecalRecHitSumEtConeDR04() > c_iso_ecal_a_ + c_iso_ecal_b_ * photonPt)
0049       return false;
0050 
0051     // HCAL iso
0052     if (photon.hcalTowerSumEtConeDR04() > c_iso_hcal_a_ + c_iso_hcal_b_ * photonPt)
0053       return false;
0054   }
0055   if (choice_ > 0.99) {
0056     //std::cout<<"Cuts "<<comb_iso_<<" H/E "<<loose_hoe_<<std::endl;
0057     if (photon.hadronicOverEm() > loose_hoe_)
0058       return false;
0059     //Isolation variables in 0.3 cone combined
0060     if (photon.trkSumPtHollowConeDR03() + photon.ecalRecHitSumEtConeDR03() + photon.hcalTowerSumEtConeDR03() >
0061         comb_iso_)
0062       return false;
0063   }
0064 
0065   return true;
0066 }