Go to the documentation of this file.00001 #include "ForIA/AnalysisTools/L2DetaTrigger.hh"
00002 #include "ForIA/Event.hh"
00003
00004 #include <stdexcept>
00005 #include <algorithm>
00006
00007 namespace ForIA{
00008
00010 L2DetaTrigger::L2DetaTrigger(): m_canChangeSettings(true), m_passes(false), m_hasDiJets(false), m_detaMax(0.), m_nJets(0){};
00011
00013 void L2DetaTrigger::setETThreshold(double ptThresh){
00014
00015 if(!m_canChangeSettings) throw std::runtime_error("Cannot change trigger settings after using trigger!");
00016
00017 m_etCut = ptThresh;
00018 return;
00019 }
00020
00022 void L2DetaTrigger::setGapSize(double gapSize){
00023
00024 if(!m_canChangeSettings) throw std::runtime_error("Cannot change trigger settings after using trigger!");
00025
00026 m_gapSize = gapSize;
00027 return;
00028 }
00029
00031 void L2DetaTrigger::setEvent(const Event &evt){
00032 m_canChangeSettings = false;
00033 m_passes = false;
00034 m_hasDiJets = false;
00035 m_detaMax = 0.;
00036
00037 L2J7JetVector jets;
00038
00039 for(L2J7JetVector::const_iterator jet = evt.l2J7Jets().begin();
00040 jet != evt.l2J7Jets().end(); ++jet){
00041 if((*jet)->ET() > m_etCut){
00042 jets.push_back(*jet);
00043 }
00044 }
00045
00046 m_nJets = jets.size();
00047
00048 if(m_nJets < 2){
00049 return;
00050 }
00051
00052 m_hasDiJets = true;
00053
00054 std::sort(jets.begin(), jets.end(), IFourMomentum::ByEtaUp());
00055
00056 L2J7JetVector::const_iterator high = jets.begin();
00057 L2J7JetVector::const_iterator low = high;
00058 ++high;
00059
00060 L2J7JetConstPtr jet1, jet2;
00061
00062 while(high != jets.end()){
00063
00064 double deta = (*high)->eta() - (*low)->eta();
00065
00066 if(deta > m_detaMax){
00067 m_detaMax = deta;
00068 jet1 = (*low);
00069 jet2 = (*high);
00070 }
00071
00072 low = high;
00073 ++high;
00074 }
00075
00076 m_jets = L2JetPair(jet1, jet2);
00077
00078 if(m_detaMax > m_gapSize){
00079 m_passes = true;
00080 }
00081
00082 return;
00083 }
00084
00086 bool L2DetaTrigger::passesTrigger()const{
00087 return m_passes;
00088 }
00089
00091 const L2JetPair & L2DetaTrigger::passingJets()const{
00092
00093 return m_jets;
00094 }
00095
00097 double L2DetaTrigger::dEtaMax()const{
00098 return m_detaMax;
00099 }
00100
00102 bool L2DetaTrigger::hasDiJets()const{
00103 return m_hasDiJets;
00104 }
00105
00107 unsigned int L2DetaTrigger::nJets()const{
00108 return m_nJets;
00109 }
00110
00111 }
00112