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

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

Go to the documentation of this file.
00001 #include "ForIA/AnalysisTools/TruthJetSelection.hh"
00002 #include "ForIA/Units.hh"
00003 #include <cmath>
00004 #include <stdexcept>
00005 
00006 namespace ForIA {
00007 
00008   TruthJetSelection::TruthJetSelection(): 
00009     FourVectorSelection(),
00010     m_haveSeteMin(false),
00011     m_haveSetetMin(false),
00012     m_haveSetptMin(false),
00013     m_haveSetetaMin(false),
00014     m_haveSetetaMax(false),
00015     m_haveSetetMinTruthJet1(false),
00016     m_haveSetetMinTruthJet2(false),
00017     m_haveSetetaMinTruthJet1(false),
00018     m_haveSetetaMaxTruthJet1(false),
00019     m_haveSetetaMinTruthJet2(false),
00020     m_haveSetetaMaxTruthJet2(false),
00021     m_haveSetDeltaPhi(false),
00022     m_haveSetJet2ETOverJet1ET(false)
00023   {
00024     
00025   }
00026 
00027   const TruthJetVector &TruthJetSelection::acceptedTruthJets() const{
00028     if(m_freshEvent) fillVectors();
00029     return m_acceptedTruthJets;
00030   }
00031   const TruthJetVector &TruthJetSelection::rejectedTruthJets() const{
00032     if(m_freshEvent) fillVectors();
00033     return m_rejectedTruthJets;
00034   }
00035 
00036   bool TruthJetSelection::setSelection(DefinedSelection selection){
00037     if(!m_canSetCuts) return false;
00038 
00039     m_haveSeteMin  = false;
00040     m_haveSetetMin = false;
00041     m_haveSetptMin  = false;
00042     m_haveSetetaMin= false;
00043     m_haveSetetaMax= false;
00044 
00045     switch (selection) {
00046     case LOOSE:
00047       setSelection(LOOSE);
00048       setETMinTruthJet1(10.0 * GeV);
00049       break;
00050       
00051     case MEDIUM:
00052       setSelection(MEDIUM);
00053       setETMinTruthJet1(10.0 * GeV);
00054       setETMinTruthJet2(10.0 * GeV);
00055       break;
00056 
00057     case TIGHT:
00058       setSelection(TIGHT);
00059       setEMin(20.0 * GeV);
00060       break;
00061 
00062     }
00063 
00064     return true;
00065   }
00066 
00067   void TruthJetSelection::fillVectors() const{
00068     
00069     //std::cout<<"TruthJetSelection fillVectors!" <<std::endl;
00070 
00071     m_freshEvent = false;
00072     
00073     m_acceptedTruthJets.clear();
00074     m_passedFourVectors.clear();
00075     m_rejectedTruthJets.clear();
00076     m_rejectedFourVectors.clear();
00077 
00078     if(m_event == 0) return;
00079 
00080     TruthJetVector input = m_event->truthJets();
00081 
00082     if(input.size() == 0 ) return;
00083 
00084     bool passedCuts = true;
00085     /*
00086     if(m_haveSetetMinTruthJet1 && passedCuts){
00087       passedCuts = input.at(0)->ET() > m_etMinTruthJet1;
00088       if(m_haveSetetaMinTruthJet1 && passedCuts ) 
00089         passedCuts = fabs( input.at(0)->eta() ) >= m_etaMinTruthJet1;
00090       if(m_haveSetetaMaxTruthJet1 && passedCuts )
00091         passedCuts = fabs( input.at(0)->eta() ) <=  m_etaMaxTruthJet1;
00092     }
00093     if(m_haveSetetMinTruthJet2 && passedCuts){
00094       passedCuts = (input.size()>1) ? (input.at(1)->ET() > m_etMinTruthJet2) : false;
00095       if(m_haveSetetaMinTruthJet1 && passedCuts )
00096         passedCuts = fabs( input.at(1)->eta() ) >= m_etaMinTruthJet2;
00097       if(m_haveSetetaMaxTruthJet2 && passedCuts )
00098         passedCuts = fabs( input.at(1)->eta() ) <=  m_etaMaxTruthJet2;
00099       if(m_haveSetJet2ETOverJet1ET && passedCuts )
00100         passedCuts = input.at(1)->ET() / input.at(0)->ET() > m_jet2ETOverjet1ET;
00101       if(m_haveSetDeltaPhi && passedCuts){
00102         double dphi = input.at(0)->phi() - input.at(1)->phi();
00103         dphi = (fmod( dphi + 3.0 * M_PI, 2.0 * M_PI ) - M_PI );
00104         passedCuts = dphi > m_deltaPhi;
00105       }
00106     }
00107     */
00108     if(passedCuts){
00109       for(TruthJetVector::const_iterator jet = input.begin();
00110           jet != input.end(); ++jet){
00111                         
00112         if(m_haveSeteMin   && passedCuts){
00113           passedCuts = ((*jet)->E() > m_eMin);
00114         }
00115         if (m_haveSetetMin && passedCuts){
00116           passedCuts = ((*jet)->ET() >= m_etMin);     
00117         }
00118         if (m_haveSetptMin && passedCuts){
00119           passedCuts = ((*jet)->PT() >= m_ptMin);
00120         }
00121         if(m_haveSetetaMin && passedCuts){ passedCuts = (fabs((*jet)->eta()) >= m_etaMin);}
00122         if(m_haveSetetaMax && passedCuts){ passedCuts = (fabs((*jet)->eta()) <= m_etaMax);}
00123         
00124         if(passedCuts){
00125           m_acceptedTruthJets.push_back( *jet );
00126           m_passedFourVectors.push_back( *jet ); 
00127         } else {
00128           m_rejectedTruthJets.push_back( *jet );
00129           m_rejectedFourVectors.push_back( *jet );
00130         }
00131       }
00132     }
00133     return;
00134   }
00135 
00136   bool TruthJetSelection::setETMin(double etMin){
00137     if(!m_canSetCuts) return false;
00138     m_haveSetetMin = true;
00139     m_etMin = etMin;
00140     return true;
00141   }
00142 
00143   bool TruthJetSelection::setETMinTruthJet1(double etMinTruthJet1){
00144     if(!m_canSetCuts) return false;
00145     m_haveSetetMinTruthJet1 = true;
00146     m_etMinTruthJet1 = etMinTruthJet1;
00147     return true;
00148   }
00149 
00150   bool TruthJetSelection::setETMinTruthJet2(double etMinTruthJet2){
00151     if(!m_canSetCuts) return false;
00152     m_haveSetetMinTruthJet2 = true;
00153     m_etMinTruthJet2 = etMinTruthJet2;
00154     return true;
00155   }
00156 
00157   bool TruthJetSelection::setEtaMinTruthJet1(double etaMinTruthJet1){
00158     if(!m_canSetCuts) return false;
00159     m_haveSetetaMinTruthJet1 = true;
00160     m_etaMinTruthJet1 = etaMinTruthJet1;
00161     return true;
00162   }
00163 
00164   bool TruthJetSelection::setEtaMaxTruthJet1(double etaMaxTruthJet1){
00165     if(!m_canSetCuts) return false;
00166     m_haveSetetaMaxTruthJet1 = true;
00167     m_etaMaxTruthJet1 = etaMaxTruthJet1;
00168     return true;
00169   }
00170 
00171   bool TruthJetSelection::setEtaMinTruthJet2(double etaMinTruthJet2){
00172     if(!m_canSetCuts) return false;
00173     m_haveSetetaMinTruthJet2 = true;
00174     m_etaMinTruthJet2 = etaMinTruthJet2;
00175     return true;
00176   }
00177 
00178   bool TruthJetSelection::setEtaMaxTruthJet2(double etaMaxTruthJet2){
00179     if(!m_canSetCuts) return false;
00180     m_haveSetetaMaxTruthJet2 = true;
00181     m_etaMaxTruthJet2 = etaMaxTruthJet2;
00182     return true;
00183   }
00184 
00185   bool TruthJetSelection::setDeltaPhi( double deltaPhi ){
00186     if(!m_canSetCuts) return false;
00187     m_haveSetDeltaPhi = true;
00188     m_deltaPhi = deltaPhi;
00189     return true;
00190   }
00191   
00192   bool TruthJetSelection::setJet2ETOverJet1ET( double jet2ETOverjet1ET ){
00193     if(!m_canSetCuts) return false;
00194     m_haveSetJet2ETOverJet1ET = true;
00195     m_jet2ETOverjet1ET = jet2ETOverjet1ET;
00196     return true;
00197   }
00198   
00199   bool TruthJetSelection::setPTMin(double ptMin){
00200     if(!m_canSetCuts) return false;
00201     m_haveSetptMin = true;
00202     m_ptMin = ptMin;
00203     return true;
00204   }
00205 
00206   bool TruthJetSelection::setEMin(double eMin){
00207     if(!m_canSetCuts) return false;
00208     m_haveSeteMin = true;
00209     m_eMin = eMin;
00210     return true;
00211   }
00212 
00213   bool TruthJetSelection::setEtaMin(double etaMin){
00214     if(!m_canSetCuts) return false;
00215     m_haveSetetaMin = true;
00216     m_etaMin = etaMin;
00217     return true;
00218   }
00219 
00220   bool TruthJetSelection::setEtaMax(double etaMax){
00221     if(!m_canSetCuts) return false;
00222     m_haveSetetaMax = true;
00223     m_etaMax = etaMax;
00224     return true;
00225   }
00226 
00227 }//end

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