00001 #ifndef FORIA_JETSELECTION_HH 00002 #define FORIA_JETSELECTION_HH 00003 00004 #include "ForIA/Jet.hh" 00005 #include "ForIA/JetKey.hh" 00006 #include "ForIA/Event.hh" 00007 00008 #include "ForIA/AnalysisTools/FourVectorSelection.hh" 00009 #include "ForIA/AnalysisTools/JESUncertaintyProvider.hh" 00010 #include "ForIA/AnalysisTools/JERProvider.hh" 00011 00012 #include <ostream> 00013 00014 namespace ForIA{ 00015 00016 class MessageBox; 00017 00018 class JetSelection : public FourVectorSelection{ 00019 00020 public: 00021 00022 JetSelection(); 00023 00024 const JetVector &acceptedJets() const; 00025 00026 const JetVector &rejectedJets() const; 00027 00028 enum DefinedSelection{LOOSE, MEDIUM, TIGHT}; 00029 00030 bool setSelection(DefinedSelection selection); 00031 void initialiseTools(); 00032 00033 // Set minimum E 00034 bool setEMin(double e); 00035 // Set minimum ET 00036 bool setETMin(double et); 00037 // Set minimum ET 00038 bool setPTMin(double pt); 00039 // Set minimum eta 00040 bool setEtaMin(double eta); 00041 // Set maximum eta 00042 bool setEtaMax(double eta); 00043 //Set minimum ET of jet1 00044 bool setETMinJet1(double et); 00045 //Set minimum ET of jet2 00046 bool setETMinJet2(double et); 00047 //Set minimum eta of jet1 00048 bool setEtaMinJet1(double eta); 00049 //Set maximum eta of jet1 00050 bool setEtaMaxJet1(double eta); 00051 //Set minimum eta of jet2 00052 bool setEtaMinJet2(double eta); 00053 //Set maximum eta of jet2 00054 bool setEtaMaxJet2(double eta); 00055 //Set delta phi 00056 bool setDeltaPhi(double dphi); 00057 //Set ration of jet2 ET to jet 1 ET 00058 bool setJet2ETOverJet1ET(double jet2ETOverjet1ET); 00059 //Set JESUncertainty 00060 bool setJESUncertCorr(int sign); 00061 //Set JERUncertainty 00062 bool setJERUncertCorr(bool jer); 00063 00064 00065 private: 00066 00067 friend std::ostream &operator << (std::ostream &out, const JetSelection &selection); 00068 friend MessageBox &operator << (MessageBox &box, const JetSelection &selection); 00069 00070 void fillVectors() const; 00071 00072 JetKey m_jetAlgKey; 00073 mutable JetVector m_acceptedJets; 00074 mutable JetVector m_rejectedJets; 00075 00076 00077 double m_eMin; 00078 double m_etMin; 00079 double m_ptMin; 00080 double m_etaMin; 00081 double m_etaMax; 00082 double m_etMinJet1; 00083 double m_etMinJet2; 00084 double m_etaMinJet1; 00085 double m_etaMaxJet1; 00086 double m_etaMinJet2; 00087 double m_etaMaxJet2; 00088 double m_deltaPhi; 00089 double m_jet2ETOverjet1ET; 00090 int m_sign; 00091 00092 bool m_haveSeteMin; 00093 bool m_haveSetetMin; 00094 bool m_haveSetptMin; 00095 bool m_haveSetetaMin; 00096 bool m_haveSetetaMax; 00097 00098 bool m_haveSetetMinJet1; 00099 bool m_haveSetetMinJet2; 00100 bool m_haveSetetaMinJet1; 00101 bool m_haveSetetaMaxJet1; 00102 bool m_haveSetetaMinJet2; 00103 bool m_haveSetetaMaxJet2; 00104 bool m_haveSetDeltaPhi; 00105 bool m_haveSetJet2ETOverJet1ET; 00106 bool m_haveSetApplyJESUncertCorr; 00107 bool m_haveSetApplyJERUncertCorr; 00108 00109 JESUncertaintyProvider *m_JESTool; 00110 JERProvider *m_JERTool; 00111 00112 }; 00113 00114 } 00115 00116 #endif