• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/Users/jmonk/Physics/ForIA/src/AnalysisTools/L2DetaTrigger.cxx

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 

Generated on Mon Jul 30 2012 16:56:35 for ForIA by  doxygen 1.7.2