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
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
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
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 }