Go to the documentation of this file.00001 #include "DQMOffline/Trigger/interface/EgHLTOffEgSel.h"
00002
00003 #include "DQMOffline/Trigger/interface/EgHLTEgCutCodes.h"
00004 #include "DQMOffline/Trigger/interface/EgHLTOffEle.h"
00005 #include "DQMOffline/Trigger/interface/EgHLTOffPho.h"
00006
00007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00008
00009 using namespace egHLT;
00010
00011 void OffEgSel::setup(const edm::ParameterSet& iConfig)
00012 {
00013 ebCutValues_.setup(iConfig.getParameter<edm::ParameterSet>("barrel"));
00014 eeCutValues_.setup(iConfig.getParameter<edm::ParameterSet>("endcap"));
00015 }
00016
00017
00018 int OffEgSel::getCutCode(const OffEle& ele,int cutMask)const
00019 {
00020 if(fabs(ele.detEta())<1.5) return getCutCode(ele,ebCutValues_,cutMask);
00021 else return getCutCode(ele,eeCutValues_,cutMask);
00022 }
00023
00024 int OffEgSel::getCutCode(const OffEle& ele,const EgCutValues& cuts,int cutMask)
00025 {
00026 int cutCode = 0x0;
00027
00028 if(ele.et()< cuts.minEt) cutCode |= EgCutCodes::ET;
00029 if(fabs(ele.etaSC())< cuts.minEta || fabs(ele.etaSC())>cuts.maxEta) cutCode |= EgCutCodes::DETETA;
00030 if(ele.isGap()) cutCode |= EgCutCodes::CRACK;
00031
00032 if(fabs(ele.dEtaIn()) > cuts.maxDEtaIn ) cutCode |=EgCutCodes::DETAIN;
00033 if(fabs(ele.dPhiIn()) > cuts.maxDPhiIn ) cutCode |=EgCutCodes::DPHIIN;
00034 if(ele.invEInvP() > cuts.maxInvEInvP) cutCode |= EgCutCodes::INVEINVP;
00035
00036 if(ele.hOverE()> cuts.maxHadem && ele.hOverE()*ele.caloEnergy()>cuts.maxHadEnergy) cutCode |= EgCutCodes::HADEM;
00037 if(ele.sigmaIEtaIEta()>cuts.maxSigmaIEtaIEta) cutCode |= EgCutCodes::SIGMAIETAIETA;
00038 if(ele.sigmaEtaEta()>cuts.maxSigmaEtaEta) cutCode |= EgCutCodes::SIGMAETAETA;
00039 if(ele.r9()<cuts.minR9) cutCode |= EgCutCodes::R9;
00040
00041
00042 if(ele.isolEm()>( cuts.isolEmConstTerm + cuts.isolEmGradTerm*(ele.et()<cuts.isolEmGradStart ? 0. : (ele.et()-cuts.isolEmGradStart)))) cutCode |=EgCutCodes::ISOLEM;
00043 if(ele.isolHad()> (cuts.isolHadConstTerm + cuts.isolHadGradTerm*(ele.et()<cuts.isolHadGradStart ? 0. : (ele.et()-cuts.isolHadGradStart)))) cutCode |=EgCutCodes::ISOLHAD;
00044 if(ele.isolPtTrks() > (cuts.isolPtTrksConstTerm + cuts.isolPtTrksGradTerm*(ele.et()<cuts.isolPtTrksGradStart ? 0. : (ele.et()-cuts.isolPtTrksGradStart))))cutCode |=EgCutCodes::ISOLPTTRKS;
00045
00046
00047 if(ele.et()<=0.){
00048 if(ele.hltIsolTrksEle() > cuts.maxHLTIsolTrksEle) cutCode |=EgCutCodes::HLTISOLTRKSELE;
00049 if(ele.hltIsolTrksPho() > cuts.maxHLTIsolTrksPho) cutCode |=EgCutCodes::HLTISOLTRKSPHO;
00050 if(ele.hltIsolHad() > cuts.maxHLTIsolHad) cutCode |=EgCutCodes::HLTISOLHAD;
00051 if(ele.hltIsolEm() > cuts.maxHLTIsolEm) cutCode |=EgCutCodes::HLTISOLEM;
00052 }else{
00053 if(ele.hltIsolTrksEle() > cuts.maxHLTIsolTrksEle && ele.hltIsolTrksEle()/ele.et() > cuts.maxHLTIsolTrksEleOverPt &&
00054 ele.hltIsolTrksEle()/ele.et()/ele.et() > cuts.maxHLTIsolTrksEleOverPt2 ) cutCode |=EgCutCodes::HLTISOLTRKSELE;
00055 if(ele.hltIsolTrksPho() > cuts.maxHLTIsolTrksPho && ele.hltIsolTrksPho()/ele.et() > cuts.maxHLTIsolTrksPhoOverPt &&
00056 ele.hltIsolTrksPho()/ele.et()/ele.et() > cuts.maxHLTIsolTrksPhoOverPt2 ) cutCode |=EgCutCodes::HLTISOLTRKSPHO;
00057 if(ele.hltIsolHad() > cuts.maxHLTIsolHad && ele.hltIsolHad()/ele.et() > cuts.maxHLTIsolHadOverEt &&
00058 ele.hltIsolHad()/ele.et()/ele.et() > cuts.maxHLTIsolHadOverEt2) cutCode |=EgCutCodes::HLTISOLHAD;
00059 if(ele.hltIsolEm() > cuts.maxHLTIsolEm && ele.hltIsolEm()/ele.et() > cuts.maxHLTIsolEmOverEt &&
00060 ele.hltIsolEm()/ele.et()/ele.et() > cuts.maxHLTIsolEmOverEt2) cutCode |=EgCutCodes::HLTISOLEM;
00061 }
00062
00063
00064
00065 if(ele.validCTFTrack()){
00066 if(!(ele.ctfTrkOuterRadius() >= cuts.minCTFTrkOuterRadius &&
00067 ele.ctfTrkInnerRadius() <= cuts.maxCTFTrkInnerRadius &&
00068
00069 ele.ctfTrkHitsFound() >= cuts.minNrCTFTrkHits &&
00070 ele.ctfTrkHitsLost() <= cuts.maxNrCTFTrkHitsLost)) cutCode |=EgCutCodes::CTFTRACK;
00071 if(cuts.requirePixelHitsIfOuterInOuter){
00072 DetId innerDetId(ele.ctfTrack()->extra()->innerDetId());
00073 DetId outerDetId(ele.ctfTrack()->extra()->outerDetId());
00074
00075 if(outerDetId.subdetId()>=5 && innerDetId.subdetId()>=3) cutCode |=EgCutCodes::CTFTRACK;
00076 }
00077
00078 }else cutCode |=EgCutCodes::CTFTRACK;
00079
00080 if(fabs(ele.hltDEtaIn()) > cuts.maxHLTDEtaIn) cutCode |=EgCutCodes::HLTDETAIN;
00081 if(fabs(ele.hltDPhiIn()) > cuts.maxHLTDPhiIn) cutCode |=EgCutCodes::HLTDPHIIN;
00082 if(fabs(ele.hltInvEInvP()) > cuts.maxHLTInvEInvP) cutCode |=EgCutCodes::HLTINVEINVP;
00083
00084 return (cutCode & cuts.cutMask & cutMask);
00085 }
00086
00087 int OffEgSel::getCutCode(const OffPho& pho,int cutMask)const
00088 {
00089 if(fabs(pho.detEta())<1.5) return getCutCode(pho,ebCutValues_,cutMask);
00090 else return getCutCode(pho,eeCutValues_,cutMask);
00091 }
00092
00093
00094 int OffEgSel::getCutCode(const OffPho& pho,const EgCutValues& cuts,int cutMask)
00095 {
00096 int cutCode = 0x0;
00097
00098 if(pho.et()< cuts.minEt) cutCode |= EgCutCodes::ET;
00099 if(fabs(pho.etaSC())< cuts.minEta || fabs(pho.etaSC())>cuts.maxEta) cutCode |= EgCutCodes::DETETA;
00100 if(pho.isGap()) cutCode |= EgCutCodes::CRACK;
00101
00102 cutCode |=EgCutCodes::DETAIN;
00103 cutCode |=EgCutCodes::DPHIIN;
00104 cutCode |=EgCutCodes::INVEINVP;
00105
00106 if(pho.hOverE()> cuts.maxHadem && pho.hOverE()*pho.energy()>cuts.maxHadEnergy) cutCode |= EgCutCodes::HADEM;
00107 if(pho.sigmaIEtaIEta()>cuts.maxSigmaIEtaIEta) cutCode |= EgCutCodes::SIGMAIETAIETA;
00108 if(pho.sigmaEtaEta()>cuts.maxSigmaEtaEta) cutCode |= EgCutCodes::SIGMAETAETA;
00109 if(pho.r9()<cuts.minR9) cutCode |= EgCutCodes::R9;
00110
00111 if(pho.isolEm()>( cuts.isolEmConstTerm + cuts.isolEmGradTerm*(pho.et()<cuts.isolEmGradStart ? 0. : (pho.et()-cuts.isolEmGradStart)))) cutCode |=EgCutCodes::ISOLEM;
00112 if(pho.isolHad()> (cuts.isolHadConstTerm + cuts.isolHadGradTerm*(pho.et()<cuts.isolHadGradStart ? 0. : (pho.et()-cuts.isolHadGradStart)))) cutCode |=EgCutCodes::ISOLHAD;
00113 if(pho.isolPtTrks() > (cuts.isolPtTrksConstTerm + cuts.isolPtTrksGradTerm*(pho.et()<cuts.isolPtTrksGradStart ? 0. : (pho.et()-cuts.isolPtTrksGradStart))))cutCode |=EgCutCodes::ISOLPTTRKS;
00114 if(pho.isolNrTrks() > cuts.isolNrTrksConstTerm) cutCode |=EgCutCodes::ISOLNRTRKS;
00115
00116
00117 cutCode |=EgCutCodes::HLTISOLTRKSELE;
00118 if(pho.et()<=0.){
00119 if(pho.hltIsolTrks() > cuts.maxHLTIsolTrksPho) cutCode |=EgCutCodes::HLTISOLTRKSPHO;
00120 if(pho.hltIsolHad() > cuts.maxHLTIsolHad) cutCode |=EgCutCodes::HLTISOLHAD;
00121 if(pho.hltIsolEm() > cuts.maxHLTIsolEm) cutCode |=EgCutCodes::HLTISOLEM;
00122 }else{
00123 if(pho.hltIsolTrks() > cuts.maxHLTIsolTrksPho && pho.hltIsolTrks()/pho.et() > cuts.maxHLTIsolTrksPhoOverPt &&
00124 pho.hltIsolTrks()/pho.et()/pho.et() > cuts.maxHLTIsolTrksPhoOverPt2 ) cutCode |=EgCutCodes::HLTISOLTRKSPHO;
00125 if(pho.hltIsolHad() > cuts.maxHLTIsolHad && pho.hltIsolHad()/pho.et() > cuts.maxHLTIsolHadOverEt &&
00126 pho.hltIsolHad()/pho.et()/pho.et() > cuts.maxHLTIsolHadOverEt2) cutCode |=EgCutCodes::HLTISOLHAD;
00127 if(pho.hltIsolEm() > cuts.maxHLTIsolEm && pho.hltIsolEm()/pho.et() > cuts.maxHLTIsolEmOverEt &&
00128 pho.hltIsolEm()/pho.et()/pho.et() > cuts.maxHLTIsolEmOverEt2) cutCode |=EgCutCodes::HLTISOLEM;
00129 }
00130
00131
00132 cutCode |=EgCutCodes::CTFTRACK;
00133 cutCode |=EgCutCodes::HLTDETAIN;
00134 cutCode |=EgCutCodes::HLTDPHIIN;
00135 cutCode |=EgCutCodes::HLTINVEINVP;
00136
00137 return (cutCode & cuts.cutMask & cutMask) ;
00138 }