Go to the documentation of this file.00001 #include "DQMOffline/Trigger/interface/EgHLTDQMCut.h"
00002
00003 using namespace egHLT;
00004
00005 bool EgTrigTagProbeCut::pass(const OffEle& theEle,const OffEvt& evt)const
00006 {
00007
00008 if( ((theEle.*cutCodeFunc_)() & cutCode_)!=0x0) return false;
00009
00010
00011 int nrTags=0;
00012 const OffEle* tagEle=NULL;
00013 const std::vector<OffEle>& eles = evt.eles();
00014
00015 for(size_t eleNr=0;eleNr<eles.size();eleNr++){
00016 if( ((eles[eleNr].*cutCodeFunc_)() & cutCode_)==0x0 && (bitsToPass_&eles[eleNr].trigBits())==bitsToPass_){
00017
00018 if(reco::deltaR2(theEle.eta(),theEle.phi(),eles[eleNr].eta(),eles[eleNr].phi())>0.1*0.1){
00019 nrTags++;
00020 tagEle = &eles[eleNr];
00021 }
00022 }
00023 }
00024 if(nrTags==1){
00025 float mass = (theEle.p4()+tagEle->p4()).mag();
00026 if(mass>minMass_ && mass<maxMass_) return true;
00027 }
00028 return false;
00029 }
00030
00031 bool EgTrigTagProbeCut_New::pass(const OffEle& theEle,const OffEvt& evt)const
00032 {
00033
00034
00035
00036 if( ((theEle.*cutCodeFunc_)() & cutCode_)!=0x0 || (bit2ToPass_&theEle.trigBits())!=bit2ToPass_) return false;
00037
00038
00039 int nrTags=0;
00040 const OffEle* tagEle=NULL;
00041 const std::vector<OffEle>& eles = evt.eles();
00042
00043 for(size_t eleNr=0;eleNr<eles.size();eleNr++){
00044 if( ((eles[eleNr].*cutCodeFunc_)() & cutCode_)==0x0 && (bit1ToPass_&eles[eleNr].trigBits())==bit1ToPass_){
00045
00046 if(reco::deltaR2(theEle.eta(),theEle.phi(),eles[eleNr].eta(),eles[eleNr].phi())>0.1*0.1){
00047 nrTags++;
00048 tagEle = &eles[eleNr];
00049 }
00050 }
00051 }
00052 if(nrTags==1){
00053 float mass = (theEle.p4()+tagEle->p4()).mag();
00054 if(mass>minMass_ && mass<maxMass_) return true;
00055 }
00056
00057 return false;
00058 }
00059
00060 bool EgTrigTagProbeCut_NewPho::pass(const OffPho& thePho,const OffEvt& evt)const
00061 {
00062
00063
00064
00065 if( ((thePho.*cutCodeFunc_)() & cutCode_)!=0x0 || (bit2ToPass_&thePho.trigBits())!=bit2ToPass_) return false;
00066
00067
00068 int nrTags=0;
00069 const OffPho* tagPho=NULL;
00070 const std::vector<OffPho>& phos = evt.phos();
00071
00072 for(size_t phoNr=0;phoNr<phos.size();phoNr++){
00073 if( ((phos[phoNr].*cutCodeFunc_)() & cutCode_)==0x0 && (bit1ToPass_&phos[phoNr].trigBits())==bit1ToPass_){
00074
00075 if(reco::deltaR2(thePho.eta(),thePho.phi(),phos[phoNr].eta(),phos[phoNr].phi())>0.1*0.1){
00076 nrTags++;
00077 tagPho = &phos[phoNr];
00078 }
00079 }
00080 }
00081 if(nrTags==1){
00082 float mass = (thePho.p4()+tagPho->p4()).mag();
00083 if(mass>minMass_ && mass<maxMass_) return true;
00084 }
00085
00086 return false;
00087 }
00088
00089 bool EgDiEleCut::pass(const OffEle& obj,const OffEvt& evt)const
00090 {
00091 const std::vector<OffEle>& eles = evt.eles();
00092 for(size_t eleNr=0;eleNr<eles.size();eleNr++){
00093 if(&eles[eleNr]!=&obj){
00094
00095 int diEleCutCode = (obj.*cutCodeFunc_)() | (eles[eleNr].*cutCodeFunc_)();
00096 if( (diEleCutCode & cutCode_)==0x0) return true;
00097 }
00098 }
00099 return false;
00100 }
00101
00102
00103
00104 bool EgDiPhoCut::pass(const OffPho& obj,const OffEvt& evt)const
00105 {
00106 const std::vector<OffPho>& phos = evt.phos();
00107 for(size_t phoNr=0;phoNr<phos.size();phoNr++){
00108 if(&phos[phoNr]!=&obj){
00109
00110 int diPhoCutCode = (obj.*cutCodeFunc_)() | (phos[phoNr].*cutCodeFunc_)();
00111 if( (diPhoCutCode & cutCode_)==0x0) return true;
00112 }
00113 }
00114 return false;
00115 }